# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
52319 | 2018-06-25T11:41:44 Z | ics0503 | Fortune Telling 2 (JOI14_fortune_telling2) | C++17 | 538 ms | 31008 KB |
#include<stdio.h> #include<algorithm> #include<vector> using namespace std; struct xy { int x, y; }a[412121]; bool sort_x(xy a, xy b) { if (a.x != b.x)return a.x < b.x; return a.y < b.y; } int Q[612121], ALL[614141], an, tn, tree[2121212], P[612121]; vector<long long>T[612121], R; int oper(int a, int b, int tp) {if (tp == 1) { if (a < b)return b; return a; }else return a + b;} void insert_g(int w, int g, int tp) { for (int i = w + tn; i > 0; i /= 2)tree[i] = oper(tree[i], g, tp); } int search_g(int ss, int ee,int tp) { int s = ss + tn, e = ee + tn, res = tp==1?-1:0; while (s <= e) { if (s % 2 == 1)res = oper(res, tree[s++],tp); if (e % 2 == 0)res = oper(res, tree[e--],tp); s /= 2; e /= 2; } return res; } int main() { int n, m, i, j; scanf("%d%d", &n, &m); for (i = 0; i < n; i++)scanf("%d%d", &a[i].x, &a[i].y), ALL[an++] = a[i].x, ALL[an++] = a[i].y; for (i = 0; i < m; i++)scanf("%d", &Q[i]), ALL[an++] = Q[i]; sort(ALL, ALL + an); an = unique(ALL, ALL + an) - ALL; for (i = 0; i < n; i++)a[i] = { lower_bound(ALL, ALL + an, a[i].x) - ALL,lower_bound(ALL, ALL + an, a[i].y) - ALL }; for (i = 0; i < m; i++)Q[i] = lower_bound(ALL, ALL + an, Q[i]) - ALL; for (tn = 1; tn < an; tn *= 2); for (i = 0; i < tn * 2; i++)tree[i] = -1; for (i = 0; i < m; i++)insert_g(Q[i], i, 1); for (i = 0; i < n; i++) { int s = min(a[i].x, a[i].y), e = max(a[i].x, a[i].y); P[i] = search_g(s, e - 1,1); if (P[i] == -1)R.push_back(i); else T[P[i]].push_back(i); } for (i = 0; i < tn * 2; i++)tree[i] = 0; long long ans = 0; for (i = m - 1; i >= 0; i--) { for (j = 0; j < T[i].size(); j++) { int now = T[i][j]; if (search_g(max(a[now].x, a[now].y), an - 1, 0) % 2 == 0)ans += ALL[max(a[now].x, a[now].y)]; else ans += ALL[min(a[now].x, a[now].y)]; } insert_g(Q[i], 1, 0); } for (i = 0; i < R.size(); i++) { int now = R[i]; if (search_g(a[now].x, an - 1, 0) % 2 == 0)ans += ALL[a[now].x]; else ans += ALL[a[now].y]; } printf("%lld", ans); return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 16 ms | 14712 KB | Output is correct |
2 | Correct | 17 ms | 14824 KB | Output is correct |
3 | Correct | 16 ms | 14940 KB | Output is correct |
4 | Correct | 16 ms | 14952 KB | Output is correct |
5 | Correct | 17 ms | 14952 KB | Output is correct |
6 | Correct | 20 ms | 14952 KB | Output is correct |
7 | Correct | 16 ms | 15000 KB | Output is correct |
8 | Correct | 15 ms | 15008 KB | Output is correct |
9 | Correct | 17 ms | 15024 KB | Output is correct |
10 | Correct | 15 ms | 15024 KB | Output is correct |
11 | Correct | 15 ms | 15084 KB | Output is correct |
12 | Correct | 19 ms | 15084 KB | Output is correct |
13 | Correct | 18 ms | 15084 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 16 ms | 14712 KB | Output is correct |
2 | Correct | 17 ms | 14824 KB | Output is correct |
3 | Correct | 16 ms | 14940 KB | Output is correct |
4 | Correct | 16 ms | 14952 KB | Output is correct |
5 | Correct | 17 ms | 14952 KB | Output is correct |
6 | Correct | 20 ms | 14952 KB | Output is correct |
7 | Correct | 16 ms | 15000 KB | Output is correct |
8 | Correct | 15 ms | 15008 KB | Output is correct |
9 | Correct | 17 ms | 15024 KB | Output is correct |
10 | Correct | 15 ms | 15024 KB | Output is correct |
11 | Correct | 15 ms | 15084 KB | Output is correct |
12 | Correct | 19 ms | 15084 KB | Output is correct |
13 | Correct | 18 ms | 15084 KB | Output is correct |
14 | Correct | 32 ms | 15612 KB | Output is correct |
15 | Correct | 54 ms | 16340 KB | Output is correct |
16 | Correct | 71 ms | 17148 KB | Output is correct |
17 | Correct | 89 ms | 17576 KB | Output is correct |
18 | Correct | 90 ms | 17576 KB | Output is correct |
19 | Correct | 87 ms | 17576 KB | Output is correct |
20 | Correct | 86 ms | 17576 KB | Output is correct |
21 | Correct | 84 ms | 17704 KB | Output is correct |
22 | Correct | 63 ms | 17704 KB | Output is correct |
23 | Correct | 62 ms | 17704 KB | Output is correct |
24 | Correct | 83 ms | 17704 KB | Output is correct |
25 | Correct | 69 ms | 17704 KB | Output is correct |
26 | Correct | 77 ms | 17704 KB | Output is correct |
27 | Correct | 73 ms | 17704 KB | Output is correct |
28 | Correct | 76 ms | 17704 KB | Output is correct |
29 | Correct | 84 ms | 17704 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 16 ms | 14712 KB | Output is correct |
2 | Correct | 17 ms | 14824 KB | Output is correct |
3 | Correct | 16 ms | 14940 KB | Output is correct |
4 | Correct | 16 ms | 14952 KB | Output is correct |
5 | Correct | 17 ms | 14952 KB | Output is correct |
6 | Correct | 20 ms | 14952 KB | Output is correct |
7 | Correct | 16 ms | 15000 KB | Output is correct |
8 | Correct | 15 ms | 15008 KB | Output is correct |
9 | Correct | 17 ms | 15024 KB | Output is correct |
10 | Correct | 15 ms | 15024 KB | Output is correct |
11 | Correct | 15 ms | 15084 KB | Output is correct |
12 | Correct | 19 ms | 15084 KB | Output is correct |
13 | Correct | 18 ms | 15084 KB | Output is correct |
14 | Correct | 32 ms | 15612 KB | Output is correct |
15 | Correct | 54 ms | 16340 KB | Output is correct |
16 | Correct | 71 ms | 17148 KB | Output is correct |
17 | Correct | 89 ms | 17576 KB | Output is correct |
18 | Correct | 90 ms | 17576 KB | Output is correct |
19 | Correct | 87 ms | 17576 KB | Output is correct |
20 | Correct | 86 ms | 17576 KB | Output is correct |
21 | Correct | 84 ms | 17704 KB | Output is correct |
22 | Correct | 63 ms | 17704 KB | Output is correct |
23 | Correct | 62 ms | 17704 KB | Output is correct |
24 | Correct | 83 ms | 17704 KB | Output is correct |
25 | Correct | 69 ms | 17704 KB | Output is correct |
26 | Correct | 77 ms | 17704 KB | Output is correct |
27 | Correct | 73 ms | 17704 KB | Output is correct |
28 | Correct | 76 ms | 17704 KB | Output is correct |
29 | Correct | 84 ms | 17704 KB | Output is correct |
30 | Correct | 150 ms | 18924 KB | Output is correct |
31 | Correct | 233 ms | 22216 KB | Output is correct |
32 | Correct | 284 ms | 23540 KB | Output is correct |
33 | Correct | 526 ms | 30728 KB | Output is correct |
34 | Correct | 120 ms | 30728 KB | Output is correct |
35 | Correct | 473 ms | 31008 KB | Output is correct |
36 | Correct | 538 ms | 31008 KB | Output is correct |
37 | Correct | 470 ms | 31008 KB | Output is correct |
38 | Correct | 476 ms | 31008 KB | Output is correct |
39 | Correct | 479 ms | 31008 KB | Output is correct |
40 | Correct | 440 ms | 31008 KB | Output is correct |
41 | Correct | 471 ms | 31008 KB | Output is correct |
42 | Correct | 508 ms | 31008 KB | Output is correct |
43 | Correct | 298 ms | 31008 KB | Output is correct |
44 | Correct | 320 ms | 31008 KB | Output is correct |
45 | Correct | 344 ms | 31008 KB | Output is correct |
46 | Correct | 287 ms | 31008 KB | Output is correct |
47 | Correct | 306 ms | 31008 KB | Output is correct |
48 | Correct | 377 ms | 31008 KB | Output is correct |
49 | Correct | 494 ms | 31008 KB | Output is correct |