106412024-04-07 16:28:26111Kicsi billentyűzetcpp17Időlimit túllépés 30/1001.577s5772 KiB
#include<bits/stdc++.h>
using namespace std;

#define int long long

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int T;
	cin>>T;
	while(T--){
		string S;
		cin>>S;
		int N=S.size();
		S='0'+S;
		for(char&c:S){
			c-='0';
		}
		int tot=0;
		for(int i=1;i<=N;i++){
			tot+=abs(S[i]-S[i-1]);
		}
		auto calc=[&](int p)->int{
			int cnt[10][10]{};
			for(int i=p+1;i<=N;i++){
				int s=min(S[i],S[i-1]);
				int e=max(S[i],S[i-1]);
				cnt[s][e]++;
			}
			int b=0;
			for(int i=0;i<10;i++){
				for(int j=i+1;j<10;j++){
					int a=0;
					for(int k=0;k<i;k++){
						a+=(cnt[k][j]-cnt[k][i])*(j-i);
					}
					for(int k=j+1;k<10;k++){
						a+=(cnt[i][k]-cnt[j][k])*(j-i);
					}
					for(int k=i+1;k<j;k++){
						a+=(cnt[i][k]-cnt[k][j])*((k-i)-(j-k));
					}
					if(i==S[p]){
						a+=abs(i-S[p-1]);
						a-=abs(j-S[p-1]);
					}
					if(j==S[p]){
						a+=abs(j-S[p-1]);
						a-=abs(i-S[p-1]);
					}
					b=max(b,a);
				}
			}
			return tot-b;
		};
		int ans=N*10;
		for(int i=1;i<=N;i++){
			ans=min(ans,calc(i));
		}
		cout<<ans<<'\n';
	}
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1824 KiB
2Elfogadva3ms2056 KiB
subtask20/30
3Elfogadva3ms2276 KiB
4Elfogadva68ms2768 KiB
5Elfogadva114ms2852 KiB
6Elfogadva158ms2968 KiB
7Időlimit túllépés1.557s2332 KiB
8Időlimit túllépés1.577s2968 KiB
9Időlimit túllépés1.577s2972 KiB
subtask330/30
10Elfogadva3ms3800 KiB
11Elfogadva3ms4028 KiB
12Elfogadva3ms4188 KiB
13Elfogadva4ms4212 KiB
14Elfogadva4ms4316 KiB
subtask40/40
15Elfogadva28ms4424 KiB
16Elfogadva68ms4876 KiB
17Elfogadva264ms5208 KiB
18Elfogadva709ms5436 KiB
19Időlimit túllépés1.565s4692 KiB
20Időlimit túllépés1.565s4832 KiB
21Időlimit túllépés1.562s5240 KiB
22Időlimit túllépés1.574s5648 KiB
23Időlimit túllépés1.56s5772 KiB