256572026-02-23 23:35:14999Kicsi billentyűzetcpp17Accepted 100/100120ms1524 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;

int main() {
    int t;cin>>t;
    while(t--){
        string s;cin>>s;
        int n=s.size();
        int ans=INT_MAX;
        vector<int> v(n);
        v[0]=s[0]-'0';
        for(int i = 1;i<n;i++){
            v[i]=v[i-1]+abs((s[i]-'0')-(s[i-1]-'0'));
        }
        ans=min(v[n-1],ans);
        for(int j = 0;j<10;j++){
            for(int k = j+1;k<10;k++){
                vector<int> V(n);
                string ts=s;
                for(int i = 0;i<n;i++){
                    if(s[i]-'0'==j)s[i]=to_string(k)[0];
                    else if(s[i]-'0'==k)s[i]=to_string(j)[0];
                }
                for(int i = n-2;i>=0;i--){
                    V[i]=V[i+1]+abs((s[i]-'0')-(s[i+1]-'0'));
                }
                //for(int i : V)cout<<i<<' ';
                //cout<<endl;
                ans=min(ans,V[0]+s[0]-'0');
                for(int i = 0;i<n-1;i++){
                    ans=min(ans,V[i+1]+v[i]+abs((ts[i]-'0')-(s[i+1]-'0')));
                }
                s=ts;
            }
        }cout<<ans<<endl;
    }
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
2Accepted1ms316 KiB
subtask230/30
3Accepted2ms316 KiB
4Accepted76ms516 KiB
5Accepted39ms316 KiB
6Accepted41ms388 KiB
7Accepted43ms564 KiB
8Accepted43ms1520 KiB
9Accepted43ms1512 KiB
subtask330/30
10Accepted2ms316 KiB
11Accepted2ms316 KiB
12Accepted2ms316 KiB
13Accepted2ms608 KiB
14Accepted1ms416 KiB
subtask440/40
15Accepted57ms316 KiB
16Accepted120ms316 KiB
17Accepted45ms316 KiB
18Accepted45ms496 KiB
19Accepted45ms760 KiB
20Accepted45ms1012 KiB
21Accepted46ms1452 KiB
22Accepted46ms1524 KiB
23Accepted46ms1516 KiB