10642 2024. 04. 07 16:34:58 111 Kicsi billentyűzet cpp17 Elfogadva 100/100 68ms 4392 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 Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1824 KiB
2 Elfogadva 3ms 2060 KiB
subtask2 30/30
3 Elfogadva 3ms 2284 KiB
4 Elfogadva 65ms 2648 KiB
5 Elfogadva 63ms 2740 KiB
6 Elfogadva 63ms 2800 KiB
7 Elfogadva 63ms 3184 KiB
8 Elfogadva 63ms 3716 KiB
9 Elfogadva 64ms 3744 KiB
subtask3 30/30
10 Elfogadva 3ms 3308 KiB
11 Elfogadva 3ms 3312 KiB
12 Elfogadva 3ms 3412 KiB
13 Elfogadva 3ms 3408 KiB
14 Elfogadva 3ms 3540 KiB
subtask4 40/40
15 Elfogadva 28ms 3628 KiB
16 Elfogadva 68ms 3692 KiB
17 Elfogadva 64ms 3848 KiB
18 Elfogadva 64ms 3692 KiB
19 Elfogadva 64ms 3800 KiB
20 Elfogadva 64ms 4044 KiB
21 Elfogadva 64ms 4236 KiB
22 Elfogadva 64ms 4392 KiB
23 Elfogadva 64ms 4160 KiB