131
272 428
185 936
3 288
271 549
707 958
362 614
128 778
512 570
233 880
68 475
517 986
<1061 bytes omitted>
用户输出
12
系统信息
Exited with return code 0
编号 | 题目 | 状态 | 分数 | 总时间 | 内存 | 代码 / 答案文件 | 提交者 | 提交时间 |
---|---|---|---|---|---|---|---|---|
#21446 | #1021. jwp的区间游戏 | Accepted | 100 | 405 ms | 7056 K | C++ 17 / 987 B | Leohh | 2020-02-07 0:43:17 |
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define MAX_N 1000005
#define N 1000000
using namespace std;
struct Data {
int l, r;
Data() {}
Data(int _l, int _r) : l(_l), r(_r) {}
friend bool operator<(const Data &a, const Data &b) { return a.l != b.l ? a.l < b.l : a.r < b.r; }
};
int n, ans = 0;
int w[MAX_N];
Data a[MAX_N];
void update(int k, int x) {
for (int i = k; i <= N; i += i & -i) {
w[i] = max(w[i], x);
}
}
int query(int k) {
int ans = 0;
for (int i = k; i > 0; i -= i & -i) {
ans = max(ans, w[i]);
}
return ans;
}
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d%d", &a[i].l, &a[i].r);
}
sort(a + 1, a + 1 + n);
for (int i = 1; i <= n; i++) {
int t = query(a[i].l - 1) + 1;
ans = max(ans, t);
update(a[i].r, t);
}
printf("%d\n", ans);
}
131
272 428
185 936
3 288
271 549
707 958
362 614
128 778
512 570
233 880
68 475
517 986
<1061 bytes omitted>
用户输出
12
系统信息
Exited with return code 0
43
27 52
40 72
16 58
45 77
74 99
17 18
39 64
30 94
2 88
14 93
85 86
6 28
86 93
29 45
<200 bytes omitted>
用户输出
6
系统信息
Exited with return code 0
47669
17877 19471
11395 15218
2902 18871
26938 27448
7762 11681
34 8895
19658 23096
1358 229
<587181 bytes omitted>
用户输出
249
系统信息
Exited with return code 0
706251
8804 16040
19927 24477
13287 18478
28138 29487
6264 25954
5313 29464
13205 16993
1231
<8702005 bytes omitted>
用户输出
915
系统信息
Exited with return code 0