QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#411759 | #8672. 排队 | hcywoi | 15 | 251ms | 22164kb | C++20 | 4.2kb | 2024-05-15 19:14:58 | 2024-05-16 17:37:42 |
Judging History
answer
#include <bits/stdc++.h>
using i64 = long long;
template<class Info, class Tag>
struct LazySegmentTree {
int n;
std::vector<Info> info;
std::vector<Tag> tag;
LazySegmentTree() : n(0) {}
LazySegmentTree(int n_, Info v_ = Info()) {
init(n_, v_);
}
template<class T>
LazySegmentTree(std::vector<T> init_) {
init(init_);
}
void init(int n_, Info v_ = Info()) {
init(std::vector(n_, v_));
}
template<class T>
void init(std::vector<T> init_) {
n = init_.size();
info.assign(4 << std::__lg(n), Info());
tag.assign(4 << std::__lg(n), Tag());
std::function<void(int, int, int)> build = [&](int p, int l, int r) {
if (l == r) {
info[p] = init_[l];
return;
}
int m = (l + r) / 2;
build(p * 2, l, m);
build(p * 2 + 1, m + 1, r);
pull(p);
};
build(1, 0, n - 1);
}
void pull(int p) {
info[p] = info[p * 2] + info[p * 2 + 1];
}
void apply(int p, const Tag& v) {
info[p].apply(v);
tag[p].apply(v);
}
void push(int p) {
apply(p * 2, tag[p]);
apply(p * 2 + 1, tag[p]);
tag[p] = Tag();
}
void modify(int p, int l, int r, int x, const Info& v) {
if (l == r) {
info[p] = v;
return;
}
int m = (l + r) / 2;
push(p);
if (x <= m) {
modify(p * 2, l, m, x, v);
} else {
modify(p * 2 + 1, m + 1, r, x, v);
}
pull(p);
}
void modify(int p, const Info& v) {
modify(1, 0, n - 1, p, v);
}
void modify(int p, int l, int r, int x, int y, const Tag& v) {
if (l >= x && r <= y) {
apply(p, v);
return;
}
int m = (l + r) / 2;
push(p);
if (x <= m) {
modify(p * 2, l, m, x, y, v);
}
if (y > m) {
modify(p * 2 + 1, m + 1, r, x, y, v);
}
pull(p);
}
void modify(int l, int r, const Tag& v) {
modify(1, 0, n - 1, l, r, v);
}
Info query(int p, int l, int r, int x, int y) {
if (l >= x && r <= y) {
return info[p];
}
int m = (l + r) / 2;
push(p);
Info info = Info();
if (x <= m) {
info = info + query(p * 2, l, m, x, y);
}
if (y > m) {
info = info + query(p * 2 + 1, m + 1, r, x, y);
}
return info;
}
Info query(int l, int r) {
return query(1, 0, n - 1, l, r);
}
int search(int p, int l, int r, int k) {
if (l == r) {
return l;
}
int m = (l + r) / 2;
push(p);
if (info[p * 2].min <= k) {
return search(p * 2, l, m, k);
} else {
return search(p * 2 + 1, m + 1, r, k);
}
}
int search(int k) {
return search(1, 0, n - 1, k);
}
int search1(int p, int l, int r, int k) {
if (l == r) {
return l;
}
int m = (l + r) / 2;
push(p);
if (info[p * 2 + 1].max >= k) {
return search(p * 2 + 1, m + 1, r, k);
} else {
return search(p * 2, l, m, k);
}
}
int search1(int k) {
return search1(1, 0, n - 1, k);
}
};
struct Tag {
int v = 0;
void apply(const Tag& a) {
v += a.v;
}
};
constexpr int inf = 1E9;
struct Info {
int max = -inf, min = inf;
void apply(const Tag& a) {
max += a.v;
min += a.v;
}
};
Info operator+ (Info a, Info b) {
Info c;
c.max = std::max(a.max, b.max);
c.min = std::min(a.min, b.min);
return c;
}
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int n, q;
std::cin >> n >> q;
std::vector<int> l(n), r(n);
for (int i = 0; i < n; i ++ ) {
std::cin >> l[i] >> r[i];
}
std::vector<std::vector<std::pair<int, int>>> qry(n);
for (int i = 0; i < q; i ++ ) {
int l, r;
std::cin >> l >> r;
l --, r -- ;
qry[r].emplace_back(l, i);
}
std::vector<int> ans(q);
LazySegmentTree<Info, Tag> seg(n);
for (int i = 0; i < n; i ++ ) {
seg.modify(i, {0, 0});
int L = seg.search(r[i]), R = seg.search1(l[i]);
if (L <= R) {
seg.modify(L, R, {1});
}
for (auto [r, x]: qry[i]) {
ans[x] = seg.query(r, r).max;
}
}
for (int i = 0; i < q; i ++ ) {
std::cout << ans[i] << "\n";
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 10
Accepted
time: 1ms
memory: 3668kb
input:
3 3 0 0 1 2 0 2 1 1 1 3 2 3
output:
1 3 1
result:
ok 3 number(s): "1 3 1"
Test #2:
score: 0
Wrong Answer
time: 4ms
memory: 3852kb
input:
5000 5000 5 10 3 9 3 8 2 7 2 5 3 6 1 5 0 2 7 8 2 10 0 3 3 6 4 6 1 6 4 8 7 8 2 7 3 4 4 9 7 8 2 9 2 5 3 6 0 5 6 7 1 2 2 4 2 10 1 5 7 9 6 9 2 3 9 10 5 5 2 9 3 3 2 7 2 4 0 6 0 3 1 7 7 7 4 8 2 9 4 8 0 10 1 8 1 1 2 7 5 9 1 7 1 7 1 4 2 4 1 4 2 9 1 7 4 7 3 8 1 3 4 6 1 5 1 6 0 0 3 9 4 7 2 8 1 8 1 2 7 8 2 7 2...
output:
11 0 11 0 0 11 11 11 0 0 0 0 11 0 11 11 11 11 11 11 11 0 11 11 11 11 0 0 11 11 11 11 11 0 11 11 0 11 11 11 0 11 0 11 11 0 11 11 11 11 11 0 11 11 5 11 11 0 11 11 11 11 11 11 11 11 11 11 11 11 0 11 11 11 11 11 0 11 0 11 11 11 11 0 11 0 11 11 11 11 11 11 11 11 0 0 11 11 0 0 11 0 0 0 0 11 0 0 0 11 0 0 1...
result:
wrong answer 2nd numbers differ - expected: '11', found: '0'
Subtask #2:
score: 0
Wrong Answer
Test #12:
score: 0
Wrong Answer
time: 183ms
memory: 22164kb
input:
200000 200000 3 6 3 3 6 10 1 7 2 7 6 9 4 6 3 4 0 8 0 6 3 5 3 4 1 8 7 8 4 5 0 3 1 5 2 9 1 2 1 2 3 4 5 7 6 10 3 9 4 7 1 6 2 6 1 7 2 5 1 7 6 8 1 1 0 7 7 8 0 9 1 7 3 8 3 7 1 2 4 8 5 6 0 6 5 6 2 7 2 6 0 6 0 6 1 7 2 5 0 3 0 3 7 10 3 8 0 2 3 4 3 7 4 9 0 6 4 7 2 6 8 10 2 10 4 10 3 3 2 6 4 5 3 9 1 8 1 2 2 9 ...
output:
11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 ...
result:
wrong answer 1957th numbers differ - expected: '1', found: '8'
Subtask #3:
score: 15
Accepted
Test #22:
score: 15
Accepted
time: 197ms
memory: 21868kb
input:
200000 200000 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 0 0 9 0 10 0 0 0 0 0 13 0 14 0 0 0 16 0 17 0 18 0 19 0 0 0 21 0 22 0 23 0 0 0 0 0 0 0 0 0 28 0 0 0 30 0 31 0 32 0 33 0 34 0 35 0 0 0 0 0 38 0 39 0 40 0 41 0 42 0 43 0 44 0 45 0 46 0 0 0 48 0 49 0 50 0 51 0 52 0 53 0 54 0 55 0 56 0 57 0 0 0 59 0 60 0 0 0 0 ...
output:
19141 39288 14841 58655 15427 4999 26338 93250 2826 78084 64070 55481 2565 15173 24866 57627 35887 51335 67552 44939 27730 24781 54502 26903 73199 7553 3836 41740 67889 104576 43522 3766 13007 31659 17264 85349 16595 28681 64012 56457 23856 47820 22752 86123 37679 44828 88810 36305 15843 33728 10005...
result:
ok 200000 numbers
Test #23:
score: 15
Accepted
time: 212ms
memory: 21832kb
input:
200000 200000 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 11 0 0 0 13 0 14 0 15 0 16 0 17 0 18 0 19 0 20 0 21 0 22 0 23 0 24 0 25 0 0 0 27 0 28 0 29 0 30 0 0 0 32 0 33 0 34 0 35 0 36 0 0 0 0 0 39 0 40 0 41 0 42 0 43 0 44 0 45 0 46 0 47 0 48 0 49 0 50 0 51 0 52 0 53 0 54 0 55 0 56 0 0 0 58 0 59 0 60 0...
output:
168949 95410 33682 47935 82249 25613 65578 22342 60917 30684 99457 21252 87719 9508 41909 17405 96346 6219 110867 56725 71026 2090 45186 37640 26229 36720 91410 64919 7095 29903 44679 40307 100104 41603 87434 53924 53758 80720 59404 164539 38810 117092 13565 110110 38606 32273 93240 81294 10356 1504...
result:
ok 200000 numbers
Test #24:
score: 15
Accepted
time: 206ms
memory: 21688kb
input:
200000 200000 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 0 11 0 12 0 13 0 14 0 15 0 16 0 17 0 18 0 19 0 20 0 21 0 22 0 23 0 24 0 25 0 26 0 27 0 28 0 29 0 30 0 31 0 32 0 33 0 34 0 35 0 36 0 37 0 38 0 39 0 40 0 41 0 42 0 43 0 44 0 45 0 46 0 47 0 48 0 49 0 50 0 51 0 52 0 53 0 54 0 55 0 56 0 57 0 58 0 59 ...
output:
69217 146306 97579 32894 129999 10418 98425 25273 33368 29464 14306 2073 112582 140228 24801 40781 52137 17338 110491 48418 54730 20451 84100 80588 2089 108163 29975 56448 14978 35560 102453 18613 30516 18699 83182 28795 25862 126187 116576 99593 36207 13935 27150 75205 66741 91089 151786 19917 2529...
result:
ok 200000 numbers
Test #25:
score: 15
Accepted
time: 231ms
memory: 21968kb
input:
200000 200000 0 5 0 99 0 23 0 88 0 62 0 24 0 80 0 70 0 45 0 55 0 99 0 91 0 82 0 99 0 47 0 80 0 9 0 4 0 51 0 64 0 52 0 2 0 2 0 81 0 98 0 36 0 27 0 34 0 97 0 22 0 89 0 77 0 89 0 25 0 90 0 91 0 77 0 37 0 89 0 52 0 58 0 18 0 81 0 35 0 56 0 71 0 18 0 56 0 74 0 40 0 76 0 47 0 87 0 11 0 81 0 48 0 59 0 17 0...
output:
101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 101 ...
result:
ok 200000 numbers
Test #26:
score: 15
Accepted
time: 239ms
memory: 21788kb
input:
200000 200000 0 193 0 229 0 553 0 197 0 718 0 370 0 853 0 695 0 764 0 571 0 714 0 700 0 692 0 293 0 962 0 536 0 482 0 148 0 804 0 864 0 925 0 864 0 296 0 757 0 283 0 338 0 746 0 447 0 365 0 390 0 689 0 239 0 60 0 388 0 822 0 836 0 373 0 703 0 107 0 894 0 468 0 125 0 851 0 568 0 914 0 391 0 759 0 66 ...
output:
1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 986 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 834 1001 999 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 995 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001 1001...
result:
ok 200000 numbers
Test #27:
score: 15
Accepted
time: 250ms
memory: 21900kb
input:
200000 200000 0 7698 0 6154 0 6707 0 7442 0 9621 0 8045 0 8938 0 5518 0 4134 0 3188 0 8054 0 5380 0 2409 0 3360 0 2771 0 9642 0 8264 0 4305 0 2844 0 7810 0 4706 0 1462 0 6282 0 2481 0 2987 0 3633 0 2634 0 4866 0 5079 0 2325 0 4394 0 8361 0 322 0 2614 0 7668 0 9067 0 452 0 2834 0 3340 0 2193 0 4070 0...
output:
9992 10001 10001 10000 10001 10001 9910 9932 2155 6995 10001 9347 10001 10001 10000 8952 9997 10000 9996 9999 10001 9996 10001 10000 9949 8842 9944 10000 10000 6517 9719 7997 10001 9875 10000 10001 10001 10001 10001 7481 10001 564 9962 8180 10001 7708 9902 9995 6677 10000 10000 9993 9841 6942 9584 1...
result:
ok 200000 numbers
Test #28:
score: 15
Accepted
time: 249ms
memory: 21864kb
input:
200000 200000 0 44932 0 12196 0 776 0 35673 0 44618 0 16521 0 9747 0 42216 0 21955 0 3389 0 22 0 15248 0 5734 0 45217 0 47977 0 8869 0 25942 0 3415 0 40771 0 28517 0 29726 0 13420 0 30474 0 44930 0 10541 0 4648 0 26903 0 19507 0 2998 0 24757 0 10645 0 47790 0 25779 0 41892 0 37322 0 34913 0 36562 0 ...
output:
48090 32992 22437 48207 21332 45359 39653 11005 43989 17371 8176 34898 30342 43305 36171 34310 36953 26580 26406 40517 30042 24009 21601 48636 34590 44645 6569 1680 36941 44685 8184 29538 47471 13134 37634 44021 16542 45480 34004 2798 44629 42393 43534 32749 42758 39005 46942 906 35042 32188 39406 4...
result:
ok 200000 numbers
Test #29:
score: 15
Accepted
time: 251ms
memory: 21940kb
input:
200000 200000 0 17611 0 59430 0 23731 0 61357 0 32905 0 30945 0 53122 0 18775 0 25563 0 43076 0 23316 0 71711 0 16622 0 27384 0 9838 0 81042 0 85530 0 32497 0 12816 0 55180 0 2256 0 81719 0 61844 0 64533 0 5302 0 33711 0 18419 0 98385 0 48813 0 58297 0 63392 0 29066 0 12542 0 14198 0 27695 0 23110 0...
output:
20413 33643 27062 9573 23562 70288 46728 62984 61505 69707 52256 43819 42924 84768 46751 32254 29961 25002 61760 47063 54538 23381 4229 40146 56797 35682 73141 55198 81237 4145 14779 79432 46593 8554 55961 48948 59145 73439 77423 43568 51349 68840 23328 1413 10825 33789 61183 12488 53414 60374 77583...
result:
ok 200000 numbers
Test #30:
score: 15
Accepted
time: 231ms
memory: 21880kb
input:
200000 200000 0 19 0 50 0 16 0 8 0 27 0 35 0 43 0 42 0 8 0 45 0 39 0 16 0 23 0 29 0 10 0 10 0 50 0 23 0 50 0 45 0 16 0 17 0 30 0 17 0 35 0 50 0 2 0 15 0 33 0 41 0 38 0 12 0 2 0 5 0 37 0 11 0 26 0 35 0 25 0 12 0 38 0 28 0 5 0 46 0 46 0 39 0 26 0 36 0 22 0 9 0 1 0 45 0 36 0 6 0 15 0 31 0 2 0 3 0 0 0 4...
output:
51 51 51 51 51 51 51 51 51 27 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 ...
result:
ok 200000 numbers
Test #31:
score: 15
Accepted
time: 223ms
memory: 21832kb
input:
200000 200000 0 3 0 3 0 10 0 1 0 7 0 6 0 6 0 4 0 8 0 0 0 5 0 4 0 8 0 7 0 5 0 0 0 1 0 9 0 1 0 1 0 3 0 7 0 10 0 9 0 4 0 6 0 6 0 1 0 5 0 7 0 8 0 1 0 0 0 8 0 9 0 7 0 8 0 7 0 2 0 8 0 6 0 6 0 5 0 7 0 2 0 0 0 6 0 7 0 5 0 3 0 3 0 10 0 3 0 0 0 3 0 3 0 9 0 0 0 7 0 2 0 10 0 10 0 10 0 3 0 2 0 5 0 9 0 1 0 1 0 9 ...
output:
11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 ...
result:
ok 200000 numbers
Subtask #4:
score: 0
Wrong Answer
Test #32:
score: 0
Wrong Answer
time: 218ms
memory: 21844kb
input:
200000 200000 0 200000 1 200000 1 200000 0 200000 0 200000 1 200000 1 200000 1 200000 0 200000 1 200000 0 200000 0 200000 1 200000 0 200000 0 200000 0 200000 0 200000 1 200000 0 200000 0 200000 1 200000 0 200000 1 200000 1 200000 1 200000 1 200000 0 200000 0 200000 1 200000 2 200000 1 200000 2 20000...
output:
53640 0 44864 35080 28126 26939 121233 115971 156348 71418 13738 96129 88153 3006 70298 0 38863 0 0 76100 64617 38262 586 0 8007 13869 118627 72106 309 13778 0 161963 48580 56814 1783 97365 104825 75 27739 0 18655 0 0 106827 15545 29080 73053 93282 115298 18096 45135 76030 131262 17223 15689 5676 40...
result:
wrong answer 1st numbers differ - expected: '71224', found: '53640'
Subtask #5:
score: 0
Skipped
Dependency #1:
0%
Subtask #6:
score: 0
Skipped
Dependency #5:
0%