제출 #366987

#제출 시각아이디문제언어결과실행 시간메모리
366987MilosMilutinovicJOIOJI (JOI14_joioji)C++14
100 / 100
49 ms6124 KiB
#include <bits/stdc++.h>
using namespace std;
const int N=2000050;
int n;
char s[N];
int main(){
	scanf("%i%s",&n,s);
	map<pair<int,int>,int> lst;
	map<char,int> cnt;
	int ans=0;
	if(n<=400){
		for(int i=0;i<n;i++){
			for(int j=i;j<n;j++){
				cnt[s[j]]++;
				if(cnt['J']==cnt['O']&&cnt['O']==cnt['I']){
					ans=max(ans,j-i+1);
				}
			}
			cnt.clear();
		}
		printf("%i",ans);
		return 0;
	}
	for(int i=0;i<n;i++){
		cnt[s[i]]++;
		pair<int,int> curr;
		curr.first=cnt['J']-cnt['O'];
		curr.second=cnt['J']-cnt['I'];
		if(lst[curr]!=0){
			ans=max(ans,i-lst[curr]+1);
		}else lst[curr]=i+1;
	}
	printf("%i",ans);
	return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

joioji.cpp: In function 'int main()':
joioji.cpp:7:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    7 |  scanf("%i%s",&n,s);
      |  ~~~~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...