# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
55100 | 2018-07-06T04:50:19 Z | ainta(#1558) | Sushi (JOI16_sushi) | C++11 | 329 ms | 2816 KB |
#include<cstdio> #include<algorithm> #include<queue> #define BB 12 using namespace std; int n, Q; struct point { int P[1<<BB], SZ; int U[1<<BB], UC; priority_queue<int>PQ; void init() { int i; for (i = UC - 1; i >= 0; i--) { P[U[i]] = PQ.top(); PQ.pop(); } } void Make() { int i, Mx = -1; UC = 0; while (!PQ.empty())PQ.pop(); for (i = 0; i < SZ; i++) { if (Mx < P[i]) { Mx = P[i]; U[UC++] = i; PQ.push(P[i]); } } } int Go(int x) { PQ.push(x); int ret = PQ.top(); PQ.pop(); return ret; } }w[(400000>>BB)+2]; int Do(int b, int e, int x) { for (int i = (b >> BB); i <= (e >> BB); i++) { int bb = (i << BB), ee = min(((i + 1) << BB) - 1, n - 1); if (b <= bb && ee <= e) { x = w[i].Go(x); } else{ w[i].init(); bb = max(b, bb)&((1 << BB) - 1); ee = min(e, ee)&((1 << BB) - 1); for (int j = bb; j <= ee; j++) { if (w[i].P[j] > x) { swap(w[i].P[j], x); } } w[i].Make(); } } return x; } int main() { int i, b, e, c; scanf("%d%d", &n, &Q); for (i = 0; i < n; i++) { scanf("%d", &w[i>>BB].P[i&((1<<BB)-1)]); w[i >> BB].SZ++; } for (i = 0; i <= ((n - 1) >> BB); i++)w[i].Make(); while (Q--) { scanf("%d%d%d", &b, &e, &c); b--, e--; if (b > e) { printf("%d\n",Do(0, e, Do(b, n - 1, c))); } else { printf("%d\n", Do(b, e, c)); } } }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 25 ms | 760 KB | Output is correct |
2 | Correct | 17 ms | 760 KB | Output is correct |
3 | Correct | 20 ms | 832 KB | Output is correct |
4 | Correct | 17 ms | 1052 KB | Output is correct |
5 | Correct | 19 ms | 1052 KB | Output is correct |
6 | Correct | 16 ms | 1052 KB | Output is correct |
7 | Correct | 14 ms | 1052 KB | Output is correct |
8 | Correct | 15 ms | 1052 KB | Output is correct |
9 | Correct | 22 ms | 1052 KB | Output is correct |
10 | Correct | 13 ms | 1052 KB | Output is correct |
11 | Correct | 329 ms | 1256 KB | Output is correct |
12 | Correct | 310 ms | 1256 KB | Output is correct |
13 | Correct | 222 ms | 1256 KB | Output is correct |
14 | Correct | 26 ms | 1256 KB | Output is correct |
15 | Correct | 22 ms | 1256 KB | Output is correct |
16 | Correct | 7 ms | 1256 KB | Output is correct |
17 | Correct | 3 ms | 1256 KB | Output is correct |
18 | Correct | 2 ms | 1256 KB | Output is correct |
19 | Correct | 3 ms | 1256 KB | Output is correct |
20 | Correct | 3 ms | 1256 KB | Output is correct |
21 | Correct | 3 ms | 1256 KB | Output is correct |
22 | Correct | 2 ms | 1256 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 149 ms | 2816 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 25 ms | 760 KB | Output is correct |
2 | Correct | 17 ms | 760 KB | Output is correct |
3 | Correct | 20 ms | 832 KB | Output is correct |
4 | Correct | 17 ms | 1052 KB | Output is correct |
5 | Correct | 19 ms | 1052 KB | Output is correct |
6 | Correct | 16 ms | 1052 KB | Output is correct |
7 | Correct | 14 ms | 1052 KB | Output is correct |
8 | Correct | 15 ms | 1052 KB | Output is correct |
9 | Correct | 22 ms | 1052 KB | Output is correct |
10 | Correct | 13 ms | 1052 KB | Output is correct |
11 | Correct | 329 ms | 1256 KB | Output is correct |
12 | Correct | 310 ms | 1256 KB | Output is correct |
13 | Correct | 222 ms | 1256 KB | Output is correct |
14 | Correct | 26 ms | 1256 KB | Output is correct |
15 | Correct | 22 ms | 1256 KB | Output is correct |
16 | Correct | 7 ms | 1256 KB | Output is correct |
17 | Correct | 3 ms | 1256 KB | Output is correct |
18 | Correct | 2 ms | 1256 KB | Output is correct |
19 | Correct | 3 ms | 1256 KB | Output is correct |
20 | Correct | 3 ms | 1256 KB | Output is correct |
21 | Correct | 3 ms | 1256 KB | Output is correct |
22 | Correct | 2 ms | 1256 KB | Output is correct |
23 | Incorrect | 149 ms | 2816 KB | Output isn't correct |
24 | Halted | 0 ms | 0 KB | - |