# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
122330 |
2019-06-28T05:03:06 Z |
nvmdava |
Seats (IOI18_seats) |
C++17 |
|
3647 ms |
60920 KB |
#include "seats.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> r, c;
vector<vector<int> > s;
int cnt[2097152], mn[2097152], lz[2097152];
int L, R, val;
inline void push(int id, int l, int r){
mn[id] += lz[id];
if(l != r){
lz[id << 1] += lz[id];
lz[id << 1 | 1] += lz[id];
}
lz[id] = 0;
}
inline void update(int id, int l, int r){
push(id, l, r);
if(l > R || r < L) return;
if(l >= L && r <= R){
lz[id] += val;
push(id, l, r);
return;
}
int m = (l + r) >> 1;
update(id << 1, l, m);
update(id << 1 | 1, m + 1, r);
if(mn[id << 1] < mn[id << 1 | 1]){
mn[id] = mn[id << 1];
cnt[id] = cnt[id << 1];
} else if(mn[id << 1] > mn[id << 1 | 1]){
mn[id] = mn[id << 1 | 1];
cnt[id] = cnt[id << 1 | 1];
} else {
mn[id] = mn[id << 1];
cnt[id] = cnt[id << 1] + cnt[id << 1 | 1];
}
}
inline void build(int id, int l, int r){
if(l == r){
cnt[id] = 1;
return;
}
int m = (l + r) >> 1;
build(id << 1, l, m);
build(id << 1 | 1, m + 1, r);
cnt[id] = cnt[id << 1] + cnt[id << 1 | 1];
}
vector<int> ord;
inline void order(int a, int b, int c, int d){
ord = {a, b, c, d};
for(int i = 1 ; i < 4 ; i++){
for(int j = 0 ; j < 3 ; j++){
if( ord[j] > ord[j+1] ){
swap(ord[j], ord[j+1]);
}
}
}
}
int n;
void give_initial_chart(int H, int W, vector<int> R, vector<int> C) {
n = H * W;
int i, j;
if(H > W){
swap(H, W);
swap(R, C);
}
for(i = 0; i <= H + 1; i++){
s.push_back(vector<int>(W + 2, n + 1));
}
r.push_back(0);
c.push_back(0);
build(1, 1, n);
for(i = 0; i < n; i++){
R[i]++;
C[i]++;
s[R[i]][C[i]] = i + 1;
c.push_back(C[i]);
r.push_back(R[i]);
}
val = 1;
for(i = 0; i <= H; i++){
for(j = 0; j <= W; j++){
order(s[i][j], s[i + 1][j], s[i][j + 1], s[i + 1][j + 1]);
L = ord[0];
::R = ord[1] - 1;
if(L <= ::R)update(1, 1, n);
L = ord[2];
::R = ord[3] - 1;
if(L <= ::R)update(1, 1, n);
}
}
}
int dx[] = {1, -1, 1, -1};
int dy[] = {1, 1, -1, -1};
int t[2];
int swap_seats(int a, int b){
a++; b++;
val = -1;
int i, j, x, y;
t[0] = a; t[1] = b;
for(j = 0; j < 2; j++){
x = r[t[j]], y = c[t[j]];
for(i = 0; i < 4; i++){
order(s[x][y], s[x + dx[i]][y], s[x][y + dy[i]], s[x + dx[i]][y + dy[i]]);
L = ord[0];
R = ord[1] - 1;
if(L <= R) update(1, 1, n);
L = ord[2];
R = ord[3] - 1;
if(L <= R) update(1, 1, n);
}
}
swap(r[a], r[b]);
swap(c[a], c[b]);
swap(s[r[a]][c[a]], s[r[b]][c[b]]);
val = 1;
for(j = 0; j < 2; j++){
x = r[t[j]], y = c[t[j]];
for(i = 0; i < 4; i++){
order(s[x][y], s[x + dx[i]][y], s[x][y + dy[i]], s[x + dx[i]][y + dy[i]]);
L = ord[0];
R = ord[1] - 1;
if(L <= R) update(1, 1, n);
L = ord[2];
R = ord[3] - 1;
if(L <= R) update(1, 1, n);
}
}
return cnt[1];
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
14 ms |
512 KB |
Output is correct |
2 |
Correct |
21 ms |
512 KB |
Output is correct |
3 |
Correct |
31 ms |
504 KB |
Output is correct |
4 |
Correct |
31 ms |
504 KB |
Output is correct |
5 |
Correct |
28 ms |
512 KB |
Output is correct |
6 |
Correct |
27 ms |
504 KB |
Output is correct |
7 |
Correct |
31 ms |
504 KB |
Output is correct |
8 |
Correct |
28 ms |
504 KB |
Output is correct |
9 |
Correct |
28 ms |
504 KB |
Output is correct |
10 |
Correct |
28 ms |
512 KB |
Output is correct |
11 |
Correct |
28 ms |
512 KB |
Output is correct |
12 |
Correct |
16 ms |
512 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
14 ms |
512 KB |
Output is correct |
2 |
Correct |
21 ms |
512 KB |
Output is correct |
3 |
Correct |
31 ms |
504 KB |
Output is correct |
4 |
Correct |
31 ms |
504 KB |
Output is correct |
5 |
Correct |
28 ms |
512 KB |
Output is correct |
6 |
Correct |
27 ms |
504 KB |
Output is correct |
7 |
Correct |
31 ms |
504 KB |
Output is correct |
8 |
Correct |
28 ms |
504 KB |
Output is correct |
9 |
Correct |
28 ms |
504 KB |
Output is correct |
10 |
Correct |
28 ms |
512 KB |
Output is correct |
11 |
Correct |
28 ms |
512 KB |
Output is correct |
12 |
Correct |
16 ms |
512 KB |
Output is correct |
13 |
Correct |
69 ms |
1180 KB |
Output is correct |
14 |
Correct |
80 ms |
1152 KB |
Output is correct |
15 |
Correct |
47 ms |
1244 KB |
Output is correct |
16 |
Correct |
40 ms |
1280 KB |
Output is correct |
17 |
Correct |
66 ms |
1400 KB |
Output is correct |
18 |
Correct |
59 ms |
1152 KB |
Output is correct |
19 |
Correct |
54 ms |
1152 KB |
Output is correct |
20 |
Correct |
46 ms |
1272 KB |
Output is correct |
21 |
Correct |
33 ms |
1280 KB |
Output is correct |
22 |
Correct |
34 ms |
1152 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2476 ms |
52568 KB |
Output is correct |
2 |
Correct |
1152 ms |
52772 KB |
Output is correct |
3 |
Correct |
1050 ms |
52764 KB |
Output is correct |
4 |
Correct |
853 ms |
52616 KB |
Output is correct |
5 |
Correct |
956 ms |
52772 KB |
Output is correct |
6 |
Correct |
844 ms |
52584 KB |
Output is correct |
7 |
Correct |
930 ms |
52576 KB |
Output is correct |
8 |
Correct |
1036 ms |
52624 KB |
Output is correct |
9 |
Correct |
1024 ms |
52644 KB |
Output is correct |
10 |
Correct |
1010 ms |
52664 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
65 ms |
1184 KB |
Output is correct |
2 |
Correct |
162 ms |
6176 KB |
Output is correct |
3 |
Correct |
883 ms |
52648 KB |
Output is correct |
4 |
Correct |
2263 ms |
52712 KB |
Output is correct |
5 |
Correct |
872 ms |
60536 KB |
Output is correct |
6 |
Correct |
2393 ms |
60572 KB |
Output is correct |
7 |
Correct |
891 ms |
55168 KB |
Output is correct |
8 |
Correct |
1189 ms |
52816 KB |
Output is correct |
9 |
Correct |
841 ms |
52836 KB |
Output is correct |
10 |
Correct |
953 ms |
53504 KB |
Output is correct |
11 |
Correct |
890 ms |
56732 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
44 ms |
1396 KB |
Output is correct |
2 |
Correct |
95 ms |
1636 KB |
Output is correct |
3 |
Correct |
148 ms |
1500 KB |
Output is correct |
4 |
Correct |
205 ms |
1468 KB |
Output is correct |
5 |
Correct |
320 ms |
2292 KB |
Output is correct |
6 |
Correct |
1290 ms |
60796 KB |
Output is correct |
7 |
Correct |
1581 ms |
60844 KB |
Output is correct |
8 |
Correct |
1223 ms |
60796 KB |
Output is correct |
9 |
Correct |
3082 ms |
60820 KB |
Output is correct |
10 |
Correct |
1287 ms |
60796 KB |
Output is correct |
11 |
Correct |
1247 ms |
60920 KB |
Output is correct |
12 |
Correct |
1205 ms |
60796 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
14 ms |
512 KB |
Output is correct |
2 |
Correct |
21 ms |
512 KB |
Output is correct |
3 |
Correct |
31 ms |
504 KB |
Output is correct |
4 |
Correct |
31 ms |
504 KB |
Output is correct |
5 |
Correct |
28 ms |
512 KB |
Output is correct |
6 |
Correct |
27 ms |
504 KB |
Output is correct |
7 |
Correct |
31 ms |
504 KB |
Output is correct |
8 |
Correct |
28 ms |
504 KB |
Output is correct |
9 |
Correct |
28 ms |
504 KB |
Output is correct |
10 |
Correct |
28 ms |
512 KB |
Output is correct |
11 |
Correct |
28 ms |
512 KB |
Output is correct |
12 |
Correct |
16 ms |
512 KB |
Output is correct |
13 |
Correct |
69 ms |
1180 KB |
Output is correct |
14 |
Correct |
80 ms |
1152 KB |
Output is correct |
15 |
Correct |
47 ms |
1244 KB |
Output is correct |
16 |
Correct |
40 ms |
1280 KB |
Output is correct |
17 |
Correct |
66 ms |
1400 KB |
Output is correct |
18 |
Correct |
59 ms |
1152 KB |
Output is correct |
19 |
Correct |
54 ms |
1152 KB |
Output is correct |
20 |
Correct |
46 ms |
1272 KB |
Output is correct |
21 |
Correct |
33 ms |
1280 KB |
Output is correct |
22 |
Correct |
34 ms |
1152 KB |
Output is correct |
23 |
Correct |
2476 ms |
52568 KB |
Output is correct |
24 |
Correct |
1152 ms |
52772 KB |
Output is correct |
25 |
Correct |
1050 ms |
52764 KB |
Output is correct |
26 |
Correct |
853 ms |
52616 KB |
Output is correct |
27 |
Correct |
956 ms |
52772 KB |
Output is correct |
28 |
Correct |
844 ms |
52584 KB |
Output is correct |
29 |
Correct |
930 ms |
52576 KB |
Output is correct |
30 |
Correct |
1036 ms |
52624 KB |
Output is correct |
31 |
Correct |
1024 ms |
52644 KB |
Output is correct |
32 |
Correct |
1010 ms |
52664 KB |
Output is correct |
33 |
Correct |
65 ms |
1184 KB |
Output is correct |
34 |
Correct |
162 ms |
6176 KB |
Output is correct |
35 |
Correct |
883 ms |
52648 KB |
Output is correct |
36 |
Correct |
2263 ms |
52712 KB |
Output is correct |
37 |
Correct |
872 ms |
60536 KB |
Output is correct |
38 |
Correct |
2393 ms |
60572 KB |
Output is correct |
39 |
Correct |
891 ms |
55168 KB |
Output is correct |
40 |
Correct |
1189 ms |
52816 KB |
Output is correct |
41 |
Correct |
841 ms |
52836 KB |
Output is correct |
42 |
Correct |
953 ms |
53504 KB |
Output is correct |
43 |
Correct |
890 ms |
56732 KB |
Output is correct |
44 |
Correct |
44 ms |
1396 KB |
Output is correct |
45 |
Correct |
95 ms |
1636 KB |
Output is correct |
46 |
Correct |
148 ms |
1500 KB |
Output is correct |
47 |
Correct |
205 ms |
1468 KB |
Output is correct |
48 |
Correct |
320 ms |
2292 KB |
Output is correct |
49 |
Correct |
1290 ms |
60796 KB |
Output is correct |
50 |
Correct |
1581 ms |
60844 KB |
Output is correct |
51 |
Correct |
1223 ms |
60796 KB |
Output is correct |
52 |
Correct |
3082 ms |
60820 KB |
Output is correct |
53 |
Correct |
1287 ms |
60796 KB |
Output is correct |
54 |
Correct |
1247 ms |
60920 KB |
Output is correct |
55 |
Correct |
1205 ms |
60796 KB |
Output is correct |
56 |
Correct |
130 ms |
1480 KB |
Output is correct |
57 |
Correct |
290 ms |
1504 KB |
Output is correct |
58 |
Correct |
519 ms |
2056 KB |
Output is correct |
59 |
Correct |
1802 ms |
53200 KB |
Output is correct |
60 |
Correct |
3647 ms |
53064 KB |
Output is correct |
61 |
Correct |
1775 ms |
53116 KB |
Output is correct |
62 |
Correct |
1375 ms |
56960 KB |
Output is correct |
63 |
Correct |
3534 ms |
55676 KB |
Output is correct |
64 |
Correct |
2015 ms |
53628 KB |
Output is correct |
65 |
Correct |
1816 ms |
53088 KB |
Output is correct |
66 |
Correct |
1724 ms |
53156 KB |
Output is correct |
67 |
Correct |
1942 ms |
53884 KB |
Output is correct |
68 |
Correct |
1467 ms |
55476 KB |
Output is correct |
69 |
Correct |
3441 ms |
56956 KB |
Output is correct |