106422024-04-07 16:34:58111Kicsi billentyűzetcpp17Accepted 100/10068ms4392 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;
		int cnt[10][10]{};
		for(int i=1;i<=N;i++){
			int s=min(S[i],S[i-1]);
			int e=max(S[i],S[i-1]);
			cnt[s][e]++;
			tot+=e-s;
		}
		auto calc=[&](int p)->int{
			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++){
			int s=min(S[i],S[i-1]);
			int e=max(S[i],S[i-1]);
			cnt[s][e]--;
			ans=min(ans,calc(i));
		}
		cout<<ans<<'\n';
	}
	return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms1824 KiB
2Accepted3ms2060 KiB
subtask230/30
3Accepted3ms2284 KiB
4Accepted65ms2648 KiB
5Accepted63ms2740 KiB
6Accepted63ms2800 KiB
7Accepted63ms3184 KiB
8Accepted63ms3716 KiB
9Accepted64ms3744 KiB
subtask330/30
10Accepted3ms3308 KiB
11Accepted3ms3312 KiB
12Accepted3ms3412 KiB
13Accepted3ms3408 KiB
14Accepted3ms3540 KiB
subtask440/40
15Accepted28ms3628 KiB
16Accepted68ms3692 KiB
17Accepted64ms3848 KiB
18Accepted64ms3692 KiB
19Accepted64ms3800 KiB
20Accepted64ms4044 KiB
21Accepted64ms4236 KiB
22Accepted64ms4392 KiB
23Accepted64ms4160 KiB