JOI本選過去問 第11回 日本情報オリンピック本選 一問目 JJOOII
はい。
おそらく誰でも解けるでしょう。
問題文はこちら。
#include <cstdio> #include <algorithm> #include <cstring> using namespace std; long n = 0; char s[1000003]; long int ans = 0; int main(){ scanf("%s",s); n = strlen(s); for(long i = 0;i < n;i++){ if(s[i] != 'J'){ continue; }else{ long int nau = i + 1; long lenj = 1,leno = 0,leni=0; while(1){ if(s[nau] == 'J'){ lenj++; nau++; }else{ break; } } if(lenj < ans){ i = nau ; continue; } while(1){ if(s[nau] == 'O'){ leno++; nau++; }else{ break; } } if(leno > lenj || leno < ans){ i = nau-1; continue; } while(1){ if(s[nau] == 'I'){ leni++; nau++; }else{ break; } } if(leni < leno || leni < ans){ i = nau - 1; continue; } ans = max(min(min(lenj,leno),leni),ans); i = nau - 1; } } printf("%ld\n",ans); return 0; }
ソース汚すぎてしにたい...