Submission #202941

# Submission time Handle Problem Language Result Execution time Memory
202941 2020-02-18T18:27:09 Z mraron JJOOII 2 (JOI20_ho_t2) C++14
0 / 100
5 ms 376 KB
#include<bits/stdc++.h>
using namespace std;
int cnt[3][200001];
int n,k;
int until(int from, int typ) {
	int res=0;
	for(int i=18;i>=0;i--) {
		int akt=res+(1<<i);
		if(from+akt>=n) continue ;
		if(cnt[typ][from+akt]-(from?cnt[typ][from-1]:0)<k) res=akt;
	}
	if(from+res+1!=n) return from+res+1;
	return -1;
}
int main() {
	string t;
	cin>>n>>k;
	cin>>t;
	for(int i=0;i<n;++i) {
		if(t[i]=='J') cnt[0][i]++;
		else if(t[i]=='O') cnt[1][i]++;
		else cnt[2][i]++;
	}
	
	for(int j=0;j<3;++j) for(int i=1;i<n;++i) cnt[j][i]+=cnt[j][i-1];
	int ans=1e9;
	for(int i=0;i<n;++i) {
		int jig=until(i,0);
		if(jig!=-1) {
			int oig=until(jig,1);
			if(oig!=-1) {
				int iig=until(oig,2);
				if(iig!=-1) {
					ans=min(ans, iig-i+1-3*k);
				}
			}
		}
	}
	if(ans==1e9) cout<<-1;
	else cout<<ans;
	return 0;
}
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 376 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 376 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 376 KB Output isn't correct
2 Halted 0 ms 0 KB -