이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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 |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |