Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- ifstream fin("gard.in");
- ofstream fout("gard.out");
- int n,i,j,lg,sc,fra,frr,frv,altsc,ci,lgmax=999999;
- char sir[100002];
- int fr[100002][4];
- int main()
- {
- fin>>n;
- sc=n/3;
- fin>>sir[0];
- if(sir[0]=='R')
- fr[0][1]=1;
- else if(sir[0]=='V')
- fr[0][2]=1;
- else fr[0][0]=1;
- for(i=1; i<n; ++i)
- {
- fr[i][1]=fr[i-1][1];
- fr[i][0]=fr[i-1][0];
- fr[i][2]=fr[i-1][2];
- fin>>sir[i];
- if(sir[i]=='R')
- fr[i][1]++;
- else if(sir[i]=='V')
- fr[i][2]++;
- else fr[i][0]++;
- }
- //fout<<fr[n-1][0]<<" "<<fr[n-1][1]<<" "<<fr[n-1][2]<<'\n';
- if(fr[n-1][0]==sc && fr[n-1][1]==sc && fr[n-1][2]==sc)
- {
- fout<<0;
- return 0;
- }
- altsc=max(max(fr[n-1][0],sc)-min(fr[n-1][0],sc),max(max(fr[n-1][1],sc)-min(fr[n-1][1],sc),max(fr[n-1][2],sc)-min(fr[n-1][2],sc)));
- //fout<<altsc;
- for(i=0;i<n;++i)
- {
- if(j==0)
- j=i;
- ci=i;
- while((fr[n-1][0]-(fr[j][0]-fr[i-1][0])>sc || fr[n-1][1] - (fr[j][1]-fr[i-1][1])>sc || fr[n-1][2] - (fr[j][2]-fr[i-1][2])>sc) && j<n)
- j++;
- if(j==n)
- continue;
- while((fr[n-1][0]-(fr[j][0]-fr[ci-1][0])<=sc && fr[n-1][1] - (fr[j][1]-fr[ci-1][1])<=sc && fr[n-1][2] - (fr[j][2]-fr[ci-1][2])<=sc) && ci<j)
- ci++;
- ci--;
- lgmax=min(lgmax,j-ci+1);
- i=max(i,ci);
- }
- fout<<lgmax;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement