이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define maxn 200005
#define j 0
#define o 1
#define i 2 //cuidado com os nomekkkkkk
int pref[3][maxn];
int n, k, minimo = maxn, pj = 1, po = 1, pi = 1, p0 = 1;
string s; //vou testar se o tamanho da string aguenta maxn caras
void joi(){
while(pref[j][po-1] - pref[j][pj-1] < k){
po++;
if(po > n) return;
}
while(pref[o][pi-1] - pref[o][po-1] < k){
pi++;
if(pi > n) return;
}
while(pref[i][p0-1] - pref[i][pi-1] < k){
p0++;
if(p0 > n+1) return;
}
}
int solve(){
for(pj = 1; pj < n; pj++){
joi();
if(p0 > n+1 or pi > n or po > n) break;
minimo = min(minimo, p0 - pj - 3*k);
}
if(minimo == maxn) return -1;
return minimo;
}
int main(){
cin >> n >> k >> s;
s = " " + s;
for(int cont = 1; cont <= n; cont++){
for(int letter = j; letter <= i; letter++)
pref[letter][cont] = pref[letter][cont-1];
if(s[cont] == 'J')
pref[j][cont]++;
if(s[cont] == 'O')
pref[o][cont]++;
if(s[cont] == 'I')
pref[i][cont]++;
}
cout << solve() << endl;
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... |