ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#203792 | #2850. 小明的套娃 | tkswls | 100 | 698ms | 10648kb | C++11 | 1.6kb | 2024-03-21 10:43:15 | 2024-03-21 17:10:09 |
answer
#include <bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
int n, m;
struct node {
int r, h, name;
} b[200005], ques[200005], a[200005];
int ans[200005], ls[200005];
inline bool comp1(node p, node q) {
return (p.h == q.h) ? (p.r > q.r) : (p.h < q.h);
}
inline bool comp2(node p, node q) {
return (p.r == q.r) ? (p.name < q.name) : (p.r > q.r);
}
int t[200005];
inline int lowbit(int p) {
return p & -p;
}
inline void add(int p, int q) {
while (p <= n) {
t[p] = max(t[p], q);
p += lowbit(p);
}
}
inline int query(int p) {
int cnt = 0;
while (p >= 1) {
cnt = max(cnt, t[p]);
p -= lowbit(p);
}
return cnt;
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> b[i].r >> b[i].h;
}
sort(b + 1, b + n + 1, comp1);
for (int i = 1; i <= m; i++) {
cin >> ques[i].r >> ques[i].h;
ques[i].name = i;
}
for (int i = 1; i <= n; i++) {
ls[i] = b[i].h;
a[i] = b[i], a[i].name = i;
}
ls[n + 1] = 1000000001;
sort(a + 1, a + n + 1, comp2);
sort(ques + 1, ques + m + 1, comp2);
int rr = 1;
a[n + 1].r = -1;
while (rr <= m && ques[rr].r > a[1].r) {
ans[ques[rr].name] = query(upper_bound(ls + 1, ls + n + 2, ques[rr].h) - ls - 1);
rr++;
}
int op;
for (int i = 1; i <= n; i++) {
op = query(a[i].name);
add(a[i].name, op + 1);
while (rr <= m && ques[rr].r > a[i + 1].r) {
ans[ques[rr].name] = query(upper_bound(ls + 1, ls + n + 2, ques[rr].h) - ls - 1);
rr++;
}
}
for (int i = 1; i <= m; i++) {
cout << ans[i] << "\n";
}
}
详细
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 0ms
memory: 1288kb
input:
50 49 811966738 378632711 986631770 389425472 375285328 507732172 994103075 304389409 446789928 4873...
output:
5 8 7 3 9 6 11 3 5 7 4 4 10 4 8 8 5 6 7 12 7 5 7 3 2 9 5 2 11 11 4 5 3 5 6 2 3 4 3 7 9 2 8 3 8 11 4 ...
result:
ok 49 lines
Test #2:
score: 10
Accepted
time: 0ms
memory: 1292kb
input:
50 49 567055707 58892634 737313670 991420259 161015631 678562871 462848177 289392886 895953827 41187...
output:
3 9 11 1 2 3 8 8 0 6 8 8 1 9 5 3 6 2 7 3 7 8 3 4 5 5 0 1 3 1 4 1 3 5 7 8 5 6 8 5 9 5 1 4 8 9 5 3 10
result:
ok 49 lines
Test #3:
score: 10
Accepted
time: 0ms
memory: 1288kb
input:
50 49 930211120 235424114 525123346 770495521 470434976 481200865 390389055 83279238 249662298 28018...
output:
7 4 3 3 7 10 8 3 6 10 6 10 6 9 10 4 0 10 5 7 7 9 8 1 10 7 8 5 6 9 6 3 5 2 0 0 2 0 1 0 5 8 0 5 5 0 7 ...
result:
ok 49 lines
Test #4:
score: 10
Accepted
time: 0ms
memory: 1296kb
input:
50 49 941295973 391152373 358083775 170525922 836118232 123805832 474220117 522716583 100518885 8771...
output:
7 5 4 5 5 2 5 4 6 2 1 5 9 1 7 6 6 5 7 5 7 6 0 1 2 2 6 1 8 7 8 5 7 5 7 4 5 10 4 5 4 2 7 8 6 2 11 4 4
result:
ok 49 lines
Test #5:
score: 10
Accepted
time: 0ms
memory: 1292kb
input:
50 49 61191973 564354058 512787694 852933636 641876502 275395669 428982518 796560030 397182165 57002...
output:
4 5 11 12 2 9 8 11 2 4 3 6 2 1 4 2 2 2 5 3 3 2 6 8 6 7 3 5 6 10 3 1 11 0 6 1 4 1 5 2 1 8 9 8 13 6 4 ...
result:
ok 49 lines
Test #6:
score: 10
Accepted
time: 3ms
memory: 1428kb
input:
3000 2999 41979397 323635534 161588038 131873447 307913371 46256784 858454515 14084282 786988666 668...
output:
35 29 23 73 57 28 80 29 26 74 34 21 19 50 34 34 31 43 52 53 31 94 35 36 71 42 76 20 30 3 23 43 40 65...
result:
ok 2999 lines
Test #7:
score: 10
Accepted
time: 5ms
memory: 1428kb
input:
3000 2999 277515933 56610884 417512091 340657915 451278245 969080762 314665213 245045004 670013317 5...
output:
90 34 67 59 95 57 24 49 50 96 81 37 28 30 39 72 45 62 43 35 40 85 30 2 25 40 58 40 51 42 83 57 72 54...
result:
ok 2999 lines
Test #8:
score: 10
Accepted
time: 306ms
memory: 10648kb
input:
200000 199999 127483569 579735802 233136777 229310663 10252697 513352468 706869872 646909474 8212017...
output:
530 373 243 400 422 213 652 171 756 113 596 186 320 509 614 540 509 50 467 381 534 261 558 421 428 1...
result:
ok 199999 lines
Test #9:
score: 10
Accepted
time: 181ms
memory: 10644kb
input:
200000 199999 267403501 433759481 384127363 607584990 143554167 955322994 326347114 247979222 474240...
output:
509 321 504 170 483 642 222 735 80 539 327 653 323 421 772 549 487 637 740 122 562 561 123 278 57 24...
result:
ok 199999 lines
Test #10:
score: 10
Accepted
time: 203ms
memory: 10648kb
input:
200000 199999 713715470 129348179 899500867 428136001 420930115 662782322 149776097 504795520 663272...
output:
707 193 225 732 6 827 321 415 130 563 353 538 647 180 467 588 524 750 257 271 135 649 63 562 309 324...
result:
ok 199999 lines