Submission #18713

#TimeUsernameProblemLanguageResultExecution timeMemory
18713suhgyuho_williamJOIOJI (JOI14_joioji)C++98
100 / 100
46 ms6952 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...