This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <stdio.h>
#include <map>
using namespace std;
int N,ans;
char a[200010];
struct data{
int j,o,i;
bool operator < (const data x) const{
if(j != x.j) return j < x.j;
if(o != x.o) return o < x.o;
return i < x.i;
}
data(int ij,int io,int ii){
j = ij;
o = io;
i = ii;
}
};
map<data,int> Map;
int main(){
int i,tmp;
int cj,co,ci;
cj = co = ci = 0;
//freopen("input.txt","r",stdin);
scanf("%d\n",&N);
gets(a);
Map[data(0,0,0)] = 0;
for(i=1; i<=N; i++){
if(a[i-1] == 'J'){
cj++;
}else if(a[i-1] == 'O'){
co++;
}else{
ci++;
}
if(Map.find(data(cj-co,co-ci,ci-cj)) != Map.end()){
tmp = Map[data(cj-co,co-ci,ci-cj)];
if(ans < i-tmp) ans = i-tmp;
}else{
Map[data(cj-co,co-ci,ci-cj)] = i;
}
}
printf("%d\n",ans);
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |