# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
185448 |
2020-01-11T19:58:53 Z |
keko37 |
Seats (IOI18_seats) |
C++14 |
|
2766 ms |
141684 KB |
#include<bits/stdc++.h>
using namespace std;
typedef long long llint;
typedef pair <llint, int> pi;
const int MAXN = 1000005;
const llint INF = 1000000000000000000LL;
const int BIG = 1000000000;
int n, m;
vector <int> r, c;
vector < vector <int> > v;
llint a[MAXN], b[MAXN];
int dx[4] = {0, 0, 1, 1};
int dy[4] = {0, 1, 0, 1};
pi t[MAXN * 2]; llint prop[MAXN * 2];
pi spoji (pi a, pi b) {
if (a.first < b.first) return a;
if (a.first > b.first) return b;
return {a.first, a.second + b.second};
}
void tour_init () {
for (int i = n*m; i < 2*n*m; i++) t[i].second = 1;
for (int i = 0; i < n*m; i++) t[i] = spoji(t[i<<1], t[i<<1|1]);
}
void build (int p) {
while (p > 1) p >>= 1, t[p] = spoji(t[p<<1], t[p<<1|1]), t[p].first += prop[p];
}
void upd(int l, int r, int value) {
l += n*m, r += n*m;
int l0 = l, r0 = r;
for (; l < r; l >>= 1, r >>= 1) {
if (l&1) t[l].first += value, prop[l] += value, l++;
if (r&1) r--, t[r].first += value, prop[r] += value;
}
build(l0);
if (r0 - 1 != l0) build(r0 - 1);
}
void two_by_two (int x, int y, int d) {
int w[4] = {v[x][y], v[x][y + 1], v[x + 1][y], v[x + 1][y + 1]};
sort(w, w + 4);
if (w[0] < w[1]) upd(w[0], w[1], d);
if (w[2] < w[3]) upd(w[2], w[3], d * BIG);
}
void give_initial_chart (int N, int M, vector <int> R, vector <int> C) {
n = N; m = M; r = R; c = C;
vector <int> e(m + 2, n*m);
for (int i = 0; i < n + 2; i++) v.push_back(e);
for (int i = 0; i < n * m; i++) {
v[R[i] + 1][C[i] + 1] = i;
}
tour_init();
for (int i = 0; i <= n; i++) {
for (int j = 0; j <= m; j++) {
two_by_two(i, j, 1);
}
}
}
int swap_seats (int a, int b) {
vector <pi> u;
for (int i = 0; i < 4; i++) u.push_back({r[a] + dx[i], c[a] + dy[i]});
for (int i = 0; i < 4; i++) u.push_back({r[b] + dx[i], c[b] + dy[i]});
sort(u.begin(), u.end());
u.erase(unique(u.begin(), u.end()), u.end());
for (auto p : u) two_by_two(p.first, p.second, -1);
swap(v[r[a] + 1][c[a] + 1], v[r[b] + 1][c[b] + 1]);
swap(r[a], r[b]);
swap(c[a], c[b]);
for (auto p : u) two_by_two(p.first, p.second, 1);
if (t[1].first > 4) return 0;
return t[1].second;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
16 ms |
504 KB |
Output is correct |
2 |
Correct |
20 ms |
504 KB |
Output is correct |
3 |
Correct |
27 ms |
504 KB |
Output is correct |
4 |
Correct |
20 ms |
504 KB |
Output is correct |
5 |
Correct |
17 ms |
504 KB |
Output is correct |
6 |
Correct |
24 ms |
504 KB |
Output is correct |
7 |
Correct |
26 ms |
504 KB |
Output is correct |
8 |
Correct |
26 ms |
504 KB |
Output is correct |
9 |
Correct |
25 ms |
524 KB |
Output is correct |
10 |
Correct |
26 ms |
504 KB |
Output is correct |
11 |
Correct |
24 ms |
504 KB |
Output is correct |
12 |
Correct |
18 ms |
508 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
16 ms |
504 KB |
Output is correct |
2 |
Correct |
20 ms |
504 KB |
Output is correct |
3 |
Correct |
27 ms |
504 KB |
Output is correct |
4 |
Correct |
20 ms |
504 KB |
Output is correct |
5 |
Correct |
17 ms |
504 KB |
Output is correct |
6 |
Correct |
24 ms |
504 KB |
Output is correct |
7 |
Correct |
26 ms |
504 KB |
Output is correct |
8 |
Correct |
26 ms |
504 KB |
Output is correct |
9 |
Correct |
25 ms |
524 KB |
Output is correct |
10 |
Correct |
26 ms |
504 KB |
Output is correct |
11 |
Correct |
24 ms |
504 KB |
Output is correct |
12 |
Correct |
18 ms |
508 KB |
Output is correct |
13 |
Correct |
52 ms |
1372 KB |
Output is correct |
14 |
Correct |
62 ms |
1272 KB |
Output is correct |
15 |
Correct |
41 ms |
1400 KB |
Output is correct |
16 |
Correct |
33 ms |
1816 KB |
Output is correct |
17 |
Correct |
48 ms |
1400 KB |
Output is correct |
18 |
Correct |
47 ms |
1272 KB |
Output is correct |
19 |
Correct |
42 ms |
1400 KB |
Output is correct |
20 |
Correct |
41 ms |
1656 KB |
Output is correct |
21 |
Correct |
34 ms |
1528 KB |
Output is correct |
22 |
Correct |
35 ms |
1880 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1874 ms |
74932 KB |
Output is correct |
2 |
Correct |
945 ms |
91000 KB |
Output is correct |
3 |
Correct |
784 ms |
89540 KB |
Output is correct |
4 |
Correct |
829 ms |
90820 KB |
Output is correct |
5 |
Correct |
783 ms |
90888 KB |
Output is correct |
6 |
Correct |
774 ms |
90984 KB |
Output is correct |
7 |
Correct |
777 ms |
90804 KB |
Output is correct |
8 |
Correct |
728 ms |
90872 KB |
Output is correct |
9 |
Correct |
897 ms |
90896 KB |
Output is correct |
10 |
Correct |
831 ms |
90248 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
54 ms |
1400 KB |
Output is correct |
2 |
Correct |
144 ms |
7160 KB |
Output is correct |
3 |
Correct |
756 ms |
90892 KB |
Output is correct |
4 |
Correct |
1760 ms |
91132 KB |
Output is correct |
5 |
Correct |
735 ms |
95000 KB |
Output is correct |
6 |
Correct |
1893 ms |
141684 KB |
Output is correct |
7 |
Correct |
710 ms |
92952 KB |
Output is correct |
8 |
Correct |
1144 ms |
90888 KB |
Output is correct |
9 |
Correct |
786 ms |
85572 KB |
Output is correct |
10 |
Correct |
929 ms |
95612 KB |
Output is correct |
11 |
Correct |
863 ms |
112396 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
68 ms |
2036 KB |
Output is correct |
2 |
Correct |
132 ms |
2248 KB |
Output is correct |
3 |
Correct |
160 ms |
2036 KB |
Output is correct |
4 |
Correct |
204 ms |
2116 KB |
Output is correct |
5 |
Correct |
295 ms |
2932 KB |
Output is correct |
6 |
Correct |
1211 ms |
99832 KB |
Output is correct |
7 |
Correct |
1345 ms |
103672 KB |
Output is correct |
8 |
Correct |
1102 ms |
95908 KB |
Output is correct |
9 |
Correct |
2493 ms |
103644 KB |
Output is correct |
10 |
Correct |
1233 ms |
99736 KB |
Output is correct |
11 |
Correct |
1220 ms |
101640 KB |
Output is correct |
12 |
Correct |
1120 ms |
95880 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
16 ms |
504 KB |
Output is correct |
2 |
Correct |
20 ms |
504 KB |
Output is correct |
3 |
Correct |
27 ms |
504 KB |
Output is correct |
4 |
Correct |
20 ms |
504 KB |
Output is correct |
5 |
Correct |
17 ms |
504 KB |
Output is correct |
6 |
Correct |
24 ms |
504 KB |
Output is correct |
7 |
Correct |
26 ms |
504 KB |
Output is correct |
8 |
Correct |
26 ms |
504 KB |
Output is correct |
9 |
Correct |
25 ms |
524 KB |
Output is correct |
10 |
Correct |
26 ms |
504 KB |
Output is correct |
11 |
Correct |
24 ms |
504 KB |
Output is correct |
12 |
Correct |
18 ms |
508 KB |
Output is correct |
13 |
Correct |
52 ms |
1372 KB |
Output is correct |
14 |
Correct |
62 ms |
1272 KB |
Output is correct |
15 |
Correct |
41 ms |
1400 KB |
Output is correct |
16 |
Correct |
33 ms |
1816 KB |
Output is correct |
17 |
Correct |
48 ms |
1400 KB |
Output is correct |
18 |
Correct |
47 ms |
1272 KB |
Output is correct |
19 |
Correct |
42 ms |
1400 KB |
Output is correct |
20 |
Correct |
41 ms |
1656 KB |
Output is correct |
21 |
Correct |
34 ms |
1528 KB |
Output is correct |
22 |
Correct |
35 ms |
1880 KB |
Output is correct |
23 |
Correct |
1874 ms |
74932 KB |
Output is correct |
24 |
Correct |
945 ms |
91000 KB |
Output is correct |
25 |
Correct |
784 ms |
89540 KB |
Output is correct |
26 |
Correct |
829 ms |
90820 KB |
Output is correct |
27 |
Correct |
783 ms |
90888 KB |
Output is correct |
28 |
Correct |
774 ms |
90984 KB |
Output is correct |
29 |
Correct |
777 ms |
90804 KB |
Output is correct |
30 |
Correct |
728 ms |
90872 KB |
Output is correct |
31 |
Correct |
897 ms |
90896 KB |
Output is correct |
32 |
Correct |
831 ms |
90248 KB |
Output is correct |
33 |
Correct |
54 ms |
1400 KB |
Output is correct |
34 |
Correct |
144 ms |
7160 KB |
Output is correct |
35 |
Correct |
756 ms |
90892 KB |
Output is correct |
36 |
Correct |
1760 ms |
91132 KB |
Output is correct |
37 |
Correct |
735 ms |
95000 KB |
Output is correct |
38 |
Correct |
1893 ms |
141684 KB |
Output is correct |
39 |
Correct |
710 ms |
92952 KB |
Output is correct |
40 |
Correct |
1144 ms |
90888 KB |
Output is correct |
41 |
Correct |
786 ms |
85572 KB |
Output is correct |
42 |
Correct |
929 ms |
95612 KB |
Output is correct |
43 |
Correct |
863 ms |
112396 KB |
Output is correct |
44 |
Correct |
68 ms |
2036 KB |
Output is correct |
45 |
Correct |
132 ms |
2248 KB |
Output is correct |
46 |
Correct |
160 ms |
2036 KB |
Output is correct |
47 |
Correct |
204 ms |
2116 KB |
Output is correct |
48 |
Correct |
295 ms |
2932 KB |
Output is correct |
49 |
Correct |
1211 ms |
99832 KB |
Output is correct |
50 |
Correct |
1345 ms |
103672 KB |
Output is correct |
51 |
Correct |
1102 ms |
95908 KB |
Output is correct |
52 |
Correct |
2493 ms |
103644 KB |
Output is correct |
53 |
Correct |
1233 ms |
99736 KB |
Output is correct |
54 |
Correct |
1220 ms |
101640 KB |
Output is correct |
55 |
Correct |
1120 ms |
95880 KB |
Output is correct |
56 |
Correct |
139 ms |
2280 KB |
Output is correct |
57 |
Correct |
254 ms |
2036 KB |
Output is correct |
58 |
Correct |
431 ms |
2932 KB |
Output is correct |
59 |
Correct |
1416 ms |
91880 KB |
Output is correct |
60 |
Correct |
2697 ms |
91768 KB |
Output is correct |
61 |
Correct |
1381 ms |
91716 KB |
Output is correct |
62 |
Correct |
1202 ms |
89816 KB |
Output is correct |
63 |
Correct |
2766 ms |
95780 KB |
Output is correct |
64 |
Correct |
1575 ms |
93164 KB |
Output is correct |
65 |
Correct |
1190 ms |
91768 KB |
Output is correct |
66 |
Correct |
1518 ms |
86084 KB |
Output is correct |
67 |
Correct |
1635 ms |
96436 KB |
Output is correct |
68 |
Correct |
1355 ms |
105228 KB |
Output is correct |
69 |
Correct |
2682 ms |
115260 KB |
Output is correct |