QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#132279 | #6756. 桂花树 | NOI_AK_ME | 0 | 3ms | 11672kb | C++11 | 2.9kb | 2023-07-29 12:34:39 | 2023-07-29 12:34:42 |
Judging History
answer
#include <bits/stdc++.h>
using ll = long long;
const int _ = 100005;
std::tuple<int, int, int> row[_], col[_], diag[_];
int pts[_];
std::pair<int, int> chg[_ * 2];
int SZ;
int fw[_];
void add(int k, int x) {
for (; k <= SZ; k += k & -k) fw[k] += x;
}
int qry(int k) {
int ret = 0;
for (; k; k &= k - 1) ret += fw[k];
return ret;
}
std::tuple<int, int, int> tmp[_];
ll ans;
void clear(int &S, std::tuple<int, int, int> seg[]) {
if (!S) return;
std::sort(seg + 1, seg + S + 1);
int T = 0;
tmp[++T] = seg[1];
for (int i = 2; i <= S; ++i) {
if (std::get<0>(tmp[T]) != std::get<0>(seg[i])) tmp[++T] = seg[i];
else if (std::get<2>(tmp[T]) < std::get<1>(seg[i])) tmp[++T] = seg[i];
else std::get<2>(tmp[T]) = std::max(std::get<2>(tmp[T]), std::get<2>(seg[i]));
}
S = T;
std::copy(tmp + 1, tmp + S + 1, seg + 1);
for (int i = 1; i <= T; ++i) ans += std::get<2>(tmp[i]) - std::get<1>(tmp[i]);
}
int loc(int x) { return std::upper_bound(pts + 1, pts + SZ + 1, x) - pts - 1; }
int rp[_], cp[_], mer[_];
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(0);
std::cout.tie(0);
int id, w, h, N;
std::cin >> id >> w >> h >> N;
int R = 0, C = 0, D = 0;
while (N--) {
int t, x1, y1, x2, y2;
std::cin >> t >> x1 >> y1 >> x2 >> y2;
if (t == 1) {
row[++R] = std::make_tuple(y1, x1, x2 + 1);
} else if (t == 2) {
col[++C] = std::make_tuple(x1, y1, y2 + 1);
} else {
diag[++D] = std::make_tuple(x1 - y1, y1, y2 + 1);
}
}
clear(R, row);
clear(C, col);
clear(D, diag);
int CG = 0;
SZ = R;
for (int i = 1; i <= R; ++i) {
pts[i] = std::get<0>(row[i]);
chg[++CG] = std::make_pair(std::get<1>(row[i]), -i);
chg[++CG] = std::make_pair(std::get<2>(row[i]), -i);
}
for (int i = 1; i <= C; ++i) chg[++CG] = std::make_pair(std::get<0>(col[i]), i);
std::sort(chg + 1, chg + CG + 1);
for (int i = 1; i <= CG; ++i) {
if (chg[i].second > 0) {
int id = chg[i].second;
int cur = qry(loc(std::get<2>(col[id]) - 1)) - qry(loc(std::get<1>(col[id]) - 1));
ans -= cur;
} else {
int id = -chg[i].second;
if (chg[i].first == std::get<1>(row[id])) add(loc(std::get<0>(row[id])), 1);
else add(loc(std::get<0>(row[id])), -1);
}
}
for (int i = 1; i <= D; ++i) {
int RP = 0, CP = 0;
int delt, ll, rr;
std::tie(delt, ll, rr) = diag[i];
for (int j = 1; j <= R; ++j) {
int y, l, r;
std::tie(y, l, r) = row[j];
int x = delt + y;
if (x < l || x >= r) continue;
if (y < ll || y >= rr) continue;
rp[++RP] = x;
}
for (int j = 1; j <= C; ++j) {
int x, l, r;
std::tie(x, l, r) = col[j];
int y = x - delt;
if (y < ll || y >= rr) continue;
if (y < l || y >= r) continue;
cp[++CP] = x;
}
std::merge(rp + 1, rp + RP + 1, cp + 1, cp + CP + 1, mer + 1);
int siz = std::unique(mer + 1, mer + RP + CP + 1) - mer - 1;
ans -= siz;
}
std::cout << ans << '\n';
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 2ms
memory: 7592kb
input:
1 15 4 2 9 1 2 3 4 4 1 1 1 1 4 3 10 1 2 3 4 2 10 1 2 3 2 3 0 1 2 2 8 1 2 4 10 1 3 3 0 1 2 3 2 0 1 1 2 2 0 1 2 4 9 1 4 2 0 1 1 1 2 4 1 1 4 4 8 1 1 1 3 3 0 1 2
output:
4
result:
wrong answer 1st numbers differ - expected: '66', found: '4'
Test #2:
score: 0
Wrong Answer
time: 2ms
memory: 9620kb
input:
2 15 4 2 0 1 1 1 3 4 8 1 2 2 2 9 1 3 4 0 1 1 4 2 9 1 1 1 3 4 2 1 1 3 3 10 1 1 3 3 0 1 2 3 2 0 1 1 3 2 0 1 1 3 4 2 1 2 2 2 0 1 2 2 0 1 4 4 8 1 1 2 3 2 0 1 2
output:
5
result:
wrong answer 1st numbers differ - expected: '63', found: '5'
Test #3:
score: 0
Wrong Answer
time: 1ms
memory: 5480kb
input:
3 15 25363 0 10 1 2 2 4 5 6 5 7 5 7 7 8 13 11 13 12 17 14 19 20 20 22 23 24 22 26 26 24 28 28 30 32 32 30 34 33 35 34 38 37 41 41 40 40 42 46 45 44 47 49 51 49 51 54 54 56 55 58 57 59 60 62 60 61 64 65 63 65 68 66 70 68 69 74 75 72 76 77 78 77 77 78 79 84 83 83 85 87 89 90 91 90 90 91 93 93 97 95 98...
output:
0
result:
wrong answer 1st numbers differ - expected: '1', found: '0'
Test #4:
score: 0
Wrong Answer
time: 2ms
memory: 7740kb
input:
4 15 95 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 81 1 0 1 1 3 3 2 4 4 4 7 8 8 11 11 12 15 16 17 18 19 17 19 22 20 22 24 25 27 24 25 26 28 29 32 33 32...
output:
1
result:
wrong answer 1st numbers differ - expected: '189', found: '1'
Test #5:
score: 0
Wrong Answer
time: 2ms
memory: 7584kb
input:
5 15 24238 1 9 1 2 2 3 2 3 7 6 6 8 11 8 13 14 14 13 14 15 15 20 17 21 19 24 25 22 23 28 27 29 28 31 32 34 35 32 35 35 39 37 38 42 39 41 43 42 47 47 45 48 49 52 50 52 51 55 53 57 58 58 60 58 60 64 62 66 66 65 65 69 68 68 73 71 72 73 75 78 77 76 78 82 81 84 82 85 84 87 86 89 90 90 90 90 91 93 94 94 98...
output:
2
result:
wrong answer 1st numbers differ - expected: '48475', found: '2'
Test #6:
score: 0
Wrong Answer
time: 1ms
memory: 7528kb
input:
6 15 90 2 0 1 1 3 3 4 6 3 5 6 1 4 8 6 3 7 2 8 17 12 1 15 8 10 17 4 7 22 1 16 15 13 17 6 24 18 20 29 24 5 37 26 19 1 36 10 11 1 32 12 29 25 36 43 25 36 35 27 30 48 13 57 43 3 48 20 49 10 42 33 32 15 67 3 72 18 59 45 65 22 47 21 76 44 36 70 31 40 36 75 97 2 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
output:
7
result:
wrong answer 1st numbers differ - expected: '32399', found: '7'
Test #7:
score: 0
Wrong Answer
time: 2ms
memory: 7580kb
input:
7 15 23937 2 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 ...
output:
4
result:
wrong answer 1st numbers differ - expected: '291919861', found: '4'
Test #8:
score: 0
Wrong Answer
time: 2ms
memory: 7640kb
input:
8 15 1 89 0 1 88 0 1 86 0 1 81 0 1 89 0 1 88 0 1 85 0 1 88 0 1 99 0 1 93 0 1 94 0 1 79 0 1 97 0 1 88 0 1 96 0
output:
-991
result:
wrong answer 1st numbers differ - expected: '643555007', found: '-991'
Test #9:
score: 0
Wrong Answer
time: 2ms
memory: 9640kb
input:
9 15 1 85 0 1 86 0 1 90 0 1 87 0 1 87 0 1 91 0 1 81 0 1 79 0 1 86 0 1 80 0 1 81 0 1 88 0 1 98 0 1 89 0 1 78 0
output:
-237
result:
wrong answer 1st numbers differ - expected: '414090976', found: '-237'
Test #10:
score: 0
Wrong Answer
time: 2ms
memory: 7552kb
input:
10 15 1 2600 0 1 2562 0 1 2885 0 1 2926 0 1 2980 0 1 2796 0 1 2809 0 1 2441 0 1 2964 0 1 2384 0 1 2634 0 1 2284 0 1 2732 0 1 2525 0 1 2635 0
output:
-295537
result:
wrong answer 1st numbers differ - expected: '980378455', found: '-295537'
Test #11:
score: 0
Wrong Answer
time: 1ms
memory: 7484kb
input:
11 15 1 97 8 1 98 8 1 75 9 1 86 10 1 91 10 1 80 10 1 99 10 1 75 10 1 81 3 1 86 8 1 76 10 1 79 9 1 77 9 1 79 8 1 92 10
output:
-1498
result:
wrong answer 1st numbers differ - expected: '201967493', found: '-1498'
Test #12:
score: 0
Wrong Answer
time: 2ms
memory: 9660kb
input:
12 15 1 2419 9 1 3000 8 1 2952 9 1 2911 10 1 2596 8 1 2997 10 1 2479 10 1 2447 10 1 2504 8 1 2325 9 1 2473 10 1 2674 8 1 2817 9 1 2303 8 1 2253 6
output:
-12995
result:
wrong answer 1st numbers differ - expected: '897921773', found: '-12995'
Test #13:
score: 0
Wrong Answer
time: 2ms
memory: 9640kb
input:
13 15 96 77 0 1 1 2 2 3 3 4 4 5 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 8 8 65 17 9 33 83 76 52 42 17 56 39 82 26 53 89 96 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...
output:
-212
result:
wrong answer 1st numbers differ - expected: '875522633', found: '-212'
Test #14:
score: 0
Wrong Answer
time: 2ms
memory: 9584kb
input:
14 15 79 92 0 1 2 1 3 2 5 6 6 6 10 7 8 10 13 14 13 15 16 17 18 17 18 21 24 25 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 18 33 33 18 9 48 19 2 6 12 28 3 22 50 5 24 14 10 15 42 11 44 36 38 58 21 9 96 81 0 1 2 3 4 3 2 4 7 7 1 7 10 12 13 1 9 14 6 13 18 4 2 4 14 25 3 3...
output:
103
result:
wrong answer 1st numbers differ - expected: '69626057', found: '103'
Test #15:
score: 0
Wrong Answer
time: 2ms
memory: 9592kb
input:
15 15 27219 2720 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50...
output:
132
result:
wrong answer 1st numbers differ - expected: '512213075', found: '132'
Test #16:
score: 0
Wrong Answer
time: 2ms
memory: 9596kb
input:
16 15 23470 2270 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50...
output:
50
result:
wrong answer 1st numbers differ - expected: '613353516', found: '50'
Test #17:
score: 0
Wrong Answer
time: 2ms
memory: 11672kb
input:
17 15 94 82 9 1 2 2 3 3 6 6 8 6 10 7 10 13 10 14 14 16 17 18 17 20 18 23 24 22 26 25 27 25 26 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 59 39 56 52 21 51 66 59 33 68 29 34 62 47 59 76 54 72 40 40 3 4 63 33 44 73 59 18 19 70 25 77 93 86 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
output:
205
result:
wrong answer 1st numbers differ - expected: '57879436', found: '205'
Test #18:
score: 0
Wrong Answer
time: 1ms
memory: 9624kb
input:
18 15 78 96 1 1 1 2 2 3 3 4 4 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 7 7 52 54 22 16 21 56 64 32 42 64 52 49 19 87 86 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
output:
354
result:
wrong answer 1st numbers differ - expected: '76805686', found: '354'
Test #19:
score: 0
Wrong Answer
time: 2ms
memory: 9540kb
input:
19 15 26104 2591 3 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50...
output:
129
result:
wrong answer 1st numbers differ - expected: '352998989', found: '129'
Test #20:
score: 0
Wrong Answer
time: 3ms
memory: 9792kb
input:
20 15 22821 2558 8 1 1 1 3 2 4 2 5 5 5 7 7 13 4 15 12 1 17 15 6 10 10 13 20 20 1 16 14 9 9 28 24 14 28 2 28 35 20 30 37 1 9 21 35 42 23 41 11 15 29 10 1 13 6 24 11 11 46 32 39 32 10 59 57 20 24 51 24 60 28 65 16 31 42 25 12 27 28 53 49 15 12 58 73 83 47 7 71 2 2 26 57 82 61 17 17 48 96 23 83 2 41 59...
output:
-37487
result:
wrong answer 1st numbers differ - expected: '852082753', found: '-37487'