10641 2024. 04. 07 16:28:26 111 Kicsi billentyűzet cpp17 Időlimit túllépés 30/100 1.577s 5772 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 Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1824 KiB
2 Elfogadva 3ms 2056 KiB
subtask2 0/30
3 Elfogadva 3ms 2276 KiB
4 Elfogadva 68ms 2768 KiB
5 Elfogadva 114ms 2852 KiB
6 Elfogadva 158ms 2968 KiB
7 Időlimit túllépés 1.557s 2332 KiB
8 Időlimit túllépés 1.577s 2968 KiB
9 Időlimit túllépés 1.577s 2972 KiB
subtask3 30/30
10 Elfogadva 3ms 3800 KiB
11 Elfogadva 3ms 4028 KiB
12 Elfogadva 3ms 4188 KiB
13 Elfogadva 4ms 4212 KiB
14 Elfogadva 4ms 4316 KiB
subtask4 0/40
15 Elfogadva 28ms 4424 KiB
16 Elfogadva 68ms 4876 KiB
17 Elfogadva 264ms 5208 KiB
18 Elfogadva 709ms 5436 KiB
19 Időlimit túllépés 1.565s 4692 KiB
20 Időlimit túllépés 1.565s 4832 KiB
21 Időlimit túllépés 1.562s 5240 KiB
22 Időlimit túllépés 1.574s 5648 KiB
23 Időlimit túllépés 1.56s 5772 KiB