# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
389726 | 2021-04-14T12:12:25 Z | georgerapeanu | Event Hopping 2 (JOI21_event2) | C++11 | 110 ms | 38724 KB |
#include <bits/stdc++.h> using namespace std; const int LGMAX = 17; const int NMAX = 1e5; int n,k; map<int,int> to_norm; int skip_list[LGMAX + 1][NMAX + 5]; pair<int,int> v[NMAX + 5]; int closest_endpoint[2 * NMAX + 5]; int get_segment_count(int l,int r){ if(l > r){ return 0; } int ans = 0; for(int h = LGMAX;h >= 0;h--){ if(skip_list[h][l] != 0 && skip_list[h][l] <= r + 1){ ans += (1 << h); l = skip_list[h][l]; } } return ans; } int aib[2 * NMAX + 5]; void update(int pos){ for(;pos <= 2 * n + 3;pos += (-pos) & pos){ aib[pos] ^= 1; } } int query(int pos){ int ans = 0; for(;pos;pos -= (-pos) & pos){ ans ^= aib[pos]; } return ans; } set<int> pos; int main(){ scanf("%d %d",&n,&k); for(int i = 1;i <= n;i++){ scanf("%d %d",&v[i].first,&v[i].second); v[i].second--; to_norm[v[i].first] = 1; to_norm[v[i].second] = 1; } int lst = 0; for(auto &it:to_norm){ it.second = ++lst; } for(int i = 1;i <= lst + 1;i++){ closest_endpoint[i] = 1e9; } for(int i = 1;i <= n;i++){ v[i].first = to_norm[v[i].first]; v[i].second = to_norm[v[i].second]; closest_endpoint[v[i].first] = min(closest_endpoint[v[i].first],v[i].second); } for(int i = lst;i;i--){ skip_list[0][i] = skip_list[0][i + 1]; if(closest_endpoint[i] != 1e9 && (skip_list[0][i] == 0 || closest_endpoint[i] + 1 < skip_list[0][i])){ skip_list[0][i] = closest_endpoint[i] + 1; } } for(int h = 1;h <= LGMAX;h++){ for(int i = 1;i <= lst;i++){ skip_list[h][i] = skip_list[h - 1][skip_list[h - 1][i]]; } } pos.insert(0); pos.insert(2 * n + 3); int ans = get_segment_count(1,2 * n + 2); if(ans < k){ printf("-1\n"); return 0; } for(int i = 1;i <= n;i++){ set<int> :: iterator it; it = pos.lower_bound(v[i].first); if(*it <= v[i].second || query(v[i].first)){ continue; } int r = *it - 1; it--; int l = *it + 1; int local_ans = ans - get_segment_count(l,r) + get_segment_count(l,v[i].first - 1) + get_segment_count(v[i].second + 1,r); if(k > 0 && local_ans >= k - 1){ k--; ans = local_ans; printf("%d\n",i); pos.insert(v[i].first); pos.insert(v[i].second); update(v[i].first); update(v[i].second + 1); } } return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 332 KB | Output is correct |
2 | Correct | 1 ms | 332 KB | Output is correct |
3 | Correct | 1 ms | 332 KB | Output is correct |
4 | Runtime error | 110 ms | 38724 KB | Execution killed with signal 11 |
5 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 332 KB | Output is correct |
2 | Correct | 1 ms | 332 KB | Output is correct |
3 | Correct | 1 ms | 332 KB | Output is correct |
4 | Correct | 1 ms | 332 KB | Output is correct |
5 | Correct | 1 ms | 332 KB | Output is correct |
6 | Correct | 1 ms | 332 KB | Output is correct |
7 | Correct | 1 ms | 332 KB | Output is correct |
8 | Correct | 1 ms | 332 KB | Output is correct |
9 | Correct | 1 ms | 300 KB | Output is correct |
10 | Correct | 1 ms | 332 KB | Output is correct |
11 | Correct | 1 ms | 332 KB | Output is correct |
12 | Correct | 1 ms | 332 KB | Output is correct |
13 | Correct | 1 ms | 332 KB | Output is correct |
14 | Correct | 1 ms | 332 KB | Output is correct |
15 | Correct | 1 ms | 332 KB | Output is correct |
16 | Correct | 1 ms | 332 KB | Output is correct |
17 | Correct | 1 ms | 332 KB | Output is correct |
18 | Correct | 1 ms | 332 KB | Output is correct |
19 | Correct | 1 ms | 332 KB | Output is correct |
20 | Correct | 1 ms | 332 KB | Output is correct |
21 | Correct | 1 ms | 332 KB | Output is correct |
22 | Correct | 1 ms | 332 KB | Output is correct |
23 | Correct | 1 ms | 304 KB | Output is correct |
24 | Correct | 1 ms | 332 KB | Output is correct |
25 | Correct | 1 ms | 332 KB | Output is correct |
26 | Correct | 1 ms | 332 KB | Output is correct |
27 | Correct | 1 ms | 332 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 332 KB | Output is correct |
2 | Correct | 1 ms | 332 KB | Output is correct |
3 | Correct | 1 ms | 332 KB | Output is correct |
4 | Correct | 1 ms | 332 KB | Output is correct |
5 | Correct | 1 ms | 332 KB | Output is correct |
6 | Correct | 1 ms | 332 KB | Output is correct |
7 | Correct | 1 ms | 332 KB | Output is correct |
8 | Correct | 1 ms | 332 KB | Output is correct |
9 | Correct | 1 ms | 300 KB | Output is correct |
10 | Correct | 1 ms | 332 KB | Output is correct |
11 | Correct | 1 ms | 332 KB | Output is correct |
12 | Correct | 1 ms | 332 KB | Output is correct |
13 | Correct | 1 ms | 332 KB | Output is correct |
14 | Correct | 1 ms | 332 KB | Output is correct |
15 | Correct | 1 ms | 332 KB | Output is correct |
16 | Correct | 1 ms | 332 KB | Output is correct |
17 | Correct | 1 ms | 332 KB | Output is correct |
18 | Correct | 1 ms | 332 KB | Output is correct |
19 | Correct | 1 ms | 332 KB | Output is correct |
20 | Correct | 1 ms | 332 KB | Output is correct |
21 | Correct | 1 ms | 332 KB | Output is correct |
22 | Correct | 1 ms | 332 KB | Output is correct |
23 | Correct | 1 ms | 304 KB | Output is correct |
24 | Correct | 1 ms | 332 KB | Output is correct |
25 | Correct | 1 ms | 332 KB | Output is correct |
26 | Correct | 1 ms | 332 KB | Output is correct |
27 | Correct | 1 ms | 332 KB | Output is correct |
28 | Correct | 4 ms | 1228 KB | Output is correct |
29 | Correct | 4 ms | 1228 KB | Output is correct |
30 | Correct | 4 ms | 1228 KB | Output is correct |
31 | Correct | 4 ms | 1228 KB | Output is correct |
32 | Correct | 4 ms | 1216 KB | Output is correct |
33 | Correct | 4 ms | 1100 KB | Output is correct |
34 | Correct | 4 ms | 1080 KB | Output is correct |
35 | Correct | 7 ms | 1448 KB | Output is correct |
36 | Correct | 6 ms | 1376 KB | Output is correct |
37 | Correct | 6 ms | 1336 KB | Output is correct |
38 | Correct | 4 ms | 1100 KB | Output is correct |
39 | Correct | 8 ms | 1356 KB | Output is correct |
40 | Correct | 6 ms | 1380 KB | Output is correct |
41 | Correct | 6 ms | 1336 KB | Output is correct |
42 | Correct | 4 ms | 1100 KB | Output is correct |
43 | Correct | 5 ms | 1228 KB | Output is correct |
44 | Correct | 5 ms | 1228 KB | Output is correct |
45 | Correct | 5 ms | 1228 KB | Output is correct |
46 | Correct | 4 ms | 1080 KB | Output is correct |
47 | Correct | 5 ms | 1176 KB | Output is correct |
48 | Correct | 4 ms | 1228 KB | Output is correct |
49 | Correct | 4 ms | 1228 KB | Output is correct |
50 | Correct | 5 ms | 1100 KB | Output is correct |
51 | Correct | 4 ms | 1212 KB | Output is correct |
52 | Correct | 4 ms | 1228 KB | Output is correct |
53 | Correct | 6 ms | 1228 KB | Output is correct |
54 | Correct | 4 ms | 1100 KB | Output is correct |
55 | Correct | 5 ms | 1484 KB | Output is correct |
56 | Correct | 5 ms | 1472 KB | Output is correct |
57 | Correct | 5 ms | 1484 KB | Output is correct |
58 | Correct | 5 ms | 1484 KB | Output is correct |
59 | Correct | 5 ms | 1484 KB | Output is correct |
60 | Correct | 5 ms | 1484 KB | Output is correct |
61 | Correct | 5 ms | 1484 KB | Output is correct |
62 | Correct | 5 ms | 1356 KB | Output is correct |
63 | Correct | 5 ms | 1356 KB | Output is correct |
64 | Correct | 3 ms | 1100 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 332 KB | Output is correct |
2 | Correct | 1 ms | 332 KB | Output is correct |
3 | Correct | 1 ms | 332 KB | Output is correct |
4 | Runtime error | 110 ms | 38724 KB | Execution killed with signal 11 |
5 | Halted | 0 ms | 0 KB | - |