Facebook
From Cobalt Owl, 3 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 123
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. //#define int long long
  4. #define MAX 200005
  5. void solve(){
  6.         vector<int> L1(MAX),L2(MAX),L3(MAX),R1(MAX),R2(MAX),R3(MAX);
  7.         string s;
  8.         cin>>s;
  9.         int n=s.size();
  10.         for(int i=0;i<n;i++){
  11.                 if(s[i]=='1'){
  12.                         L1[i+1]=i+1;
  13.                         L2[i+1]=L2[i];
  14.                         L3[i+1]=L3[i];
  15.                 }
  16.                 else if(s[i] == '2'){
  17.                         L2[i+1]=i+1;
  18.                         L1[i+1]=L1[i];
  19.                         L3[i+1]=L3[i];
  20.                 }
  21.                 else{
  22.                         L3[i+1]=i+1;
  23.                         L1[i+1]=L1[i];
  24.                         L2[i+1]=L2[i];
  25.                 }
  26.         }
  27.         for(int i=n-1;i>=0;i--){
  28.                 if(s[i]=='1'){
  29.                         R1[i+1]=i+1;
  30.                         R2[i+1]=R2[i+2];
  31.                         R3[i+1]=R3[i+2];
  32.                 }
  33.                 else if(s[i] == '2'){
  34.                         R2[i+1]=i+1;
  35.                         R1[i+1]=R1[i+2];
  36.                         R3[i+1]=R3[i+2];
  37.                 }
  38.                 else{
  39.                         R3[i+1]=i+1;
  40.                         R1[i+1]=R1[i+2];
  41.                         R2[i+1]=R2[i+2];
  42.                 }
  43.         }
  44.         int cur=1e8;
  45.         for(int i=0;i<n;i++){
  46.                 if(s[i]=='1' && R2[i+2]!=0 && R3[i+2]!=0){
  47.                         //cout<<max(R2[i+2],R3[i+2]) - L1[i+1] + 1<<endl;
  48.                         cur = min(cur,max(R2[i+2],R3[i+2]) - L1[i+1] + 1);
  49.                 }
  50.                 if(s[i]=='2' && R1[i+2]!=0 && R3[i+2]!=0){
  51.                         //cout<<max(R1[i+2],R2[i+2]) - L3[i+1] + 1<<endl;
  52.                         cur = min(cur,max(R3[i+2],R1[i+2]) - L2[i+1] + 1);
  53.                 }
  54.                 if(s[i]=='3' && R2[i+2]!=0 && R1[i+2]!=0){
  55.                         //cout<<max(R1[i+2],R2[i+2]) - L3[i+1] + 1<<endl;
  56.                         cur=min(cur,max(R1[i+2],R2[i+2]) - L3[i+1] + 1);
  57.                 }
  58.         }
  59.         if(cur == (int) 1e8){
  60.                 cout<<0<<endl;
  61.                 return;
  62.         }
  63.         cout<<cur<<endl;
  64. }
  65. //#undef int
  66. int main(){
  67.         ios::sync_with_stdio(0);
  68.         cin.tie(0);
  69.         //#define int long long
  70.         int t;
  71.         cin>>t;
  72.         while(t--){    
  73.                 solve();
  74.         }
  75. }