106422024-04-07 16:34:58111Kicsi billentyűzetcpp17Elfogadva 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1824 KiB
2Elfogadva3ms2060 KiB
subtask230/30
3Elfogadva3ms2284 KiB
4Elfogadva65ms2648 KiB
5Elfogadva63ms2740 KiB
6Elfogadva63ms2800 KiB
7Elfogadva63ms3184 KiB
8Elfogadva63ms3716 KiB
9Elfogadva64ms3744 KiB
subtask330/30
10Elfogadva3ms3308 KiB
11Elfogadva3ms3312 KiB
12Elfogadva3ms3412 KiB
13Elfogadva3ms3408 KiB
14Elfogadva3ms3540 KiB
subtask440/40
15Elfogadva28ms3628 KiB
16Elfogadva68ms3692 KiB
17Elfogadva64ms3848 KiB
18Elfogadva64ms3692 KiB
19Elfogadva64ms3800 KiB
20Elfogadva64ms4044 KiB
21Elfogadva64ms4236 KiB
22Elfogadva64ms4392 KiB
23Elfogadva64ms4160 KiB