| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 233712 | duality | JJOOII 2 (JOI20_ho_t2) | C++11 | 28 ms | 5504 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
#define mp make_pair
#define pb push_back
typedef long long int LLI;
typedef vector<int> vi;
typedef pair<int,int> pii;
typedef vector<pii> vpii;
char S[200000];
int pre[3][200001],n[3][200001];
int main() {
int i,j;
int N,K;
scanf("%d %d",&N,&K);
for (i = 0; i < N; i++) {
scanf(" %c",&S[i]);
for (j = 0; j < 3; j++) pre[j][i+1] = pre[j][i];
if (S[i] == 'J') pre[0][i+1]++;
else if (S[i] == 'O') pre[1][i+1]++;
else pre[2][i+1]++;
}
int ans = 1e9;
j = 0;
for (i = 0; i < N; i++) {
while (pre[0][i+1]-pre[0][j] >= K) j++;
n[0][i] = j-1;
}
j = 0;
for (i = 0; i < N; i++) {
while (pre[1][i+1]-pre[1][j] >= K) j++;
n[1][i] = j-1;
}
j = 0;
for (i = 0; i < N; i++) {
while (pre[2][i+1]-pre[2][j] >= K) j++;
n[2][i] = j-1;
}
for (i = 0; i < N; i++) {
int u = n[2][i]-1;
if (u >= 0) u = n[1][u]-1;
else u = -2;
if (u >= 0) u = n[0][u]-1;
else u = -2;
if (u != -2) ans = min(ans,i-u);
}
if (ans == 1e9) printf("-1\n");
else printf("%d\n",ans-3*K);
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
