# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
61606 | 2018-07-26T08:02:13 Z | 김세빈(#1779) | Election (BOI18_election) | C++11 | 12 ms | 488 KB |
#include <bits/stdc++.h> using namespace std; char str[505050]; int K[505050], S[505050], L[505050]; bool chk[505050]; int n; int main() { int q, i, l, r, k, s, minv, maxv; scanf("%d%s%d", &n, str, &q); s = 0; for(i=1; i<=n; i++){ if(str[i-1] == 'C') S[i] = S[i-1] + 1; else S[i] = S[i-1] - 1; for(; s && S[K[s]] > S[i]; s--); L[i] = K[s]; K[++s] = i; } for(; q--; ){ scanf("%d%d", &l, &r); k = 0; for(i=l; i<=r; i++){ if(str[i-1] == 'T' && L[i] < l - 1){ k ++, chk[i] = 1; } } s = maxv = 0; for(i=r; i>=l; i--){ if(str[i-1] == 'C') s ++; else s -= !chk[i]; maxv = max(maxv, -s); chk[i] = 0; } printf("%d\n", k + maxv); } return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 9 ms | 376 KB | Output is correct |
2 | Incorrect | 12 ms | 488 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 9 ms | 376 KB | Output is correct |
2 | Incorrect | 12 ms | 488 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 9 ms | 376 KB | Output is correct |
2 | Incorrect | 12 ms | 488 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |