#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
#ifdef _WIN32
#define getchar_unlocked _getchar_nolock
#endif
#define int long long
#define mp make_pair
#define mt make_tuple
#define pb push_back
#define ppb pop_back
#define eb emplace_back
#define g0(a) get<0>(a)
#define g1(a) get<1>(a)
#define g2(a) get<2>(a)
#define g3(a) get<3>(a)
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
typedef double db;
typedef long long ll;
typedef long double ld;
typedef pair<int, int> ii;
typedef tuple<int, int, int> iii;
typedef tuple<int, int, int, int> iiii;
typedef tree<iii, null_type, greater<iii>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;
int N, K, curr, L[500005], R[500005], dep[500005], anc[500005][25];
bool vis[500005];
ii mx[500005];
multiset<ii> untaken, ft[500005];
vector<int> v, adj[500005];
void dfs(int n, int e = -1) {
anc[n][0] = e;
vis[n] = 1;
for (int i = 1; i <= 20; i++)
if (anc[n][i - 1] != -1) anc[n][i] = anc[anc[n][i - 1]][i - 1];
for (auto u : adj[n]) if (u != e) {
dep[u] = dep[n] + 1;
dfs(u, n);
}
}
inline int ls(int x) { return x & -x; }
ii qry(int p) {
ii ret = mp(LLONG_MAX, LLONG_MAX);
for (; p <= 2 * N; p += ls(p))
if (!ft[p].empty()) ret = min(ret, *ft[p].begin());
return ret;
}
void upd(int x) {
for (int p = L[x]; p; p -= ls(p))
ft[p].emplace(R[x], x);
}
int get(int l, int r) {
auto tmp = qry(l);
if (tmp.second == LLONG_MAX) return 0;
int curr = tmp.second;
if (R[curr] > r) return 0;
for (int i = 20; i >= 0; i--)
if (anc[curr][i] != -1 && R[anc[curr][i]] <= r) curr = anc[curr][i];
return dep[mx[l].second] - dep[curr] + 1;
}
int forceadd(int x, bool b = 0) {
// add [L[x], R[x]]
auto it = untaken.lower_bound(mp(R[x], 0ll));
if (it == untaken.begin()) return -1;
--it;
if (it->first <= L[x] && R[x] <= it->second) {
if (b == 1) {
untaken.emplace(it->first, L[x]);
untaken.emplace(R[x], it->second);
untaken.erase(it);
}
int tmp = 1 + curr + -get(it->first, it->second) + get(it->first, L[x]) + get(R[x], it->second);
if (b) curr = tmp;
return tmp;
} else return -1;
}
main() {
memset(anc, -1, sizeof anc);
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> K;
for (int i = 1; i <= N; i++) cin >> L[i] >> R[i], v.pb(L[i]), v.pb(R[i]);
sort(v.begin(), v.end());
v.erase(unique(v.begin(), v.end()), v.end());
for (int i = 1; i <= N; i++) {
L[i] = lower_bound(v.begin(), v.end(), L[i]) - v.begin() + 1;
R[i] = lower_bound(v.begin(), v.end(), R[i]) - v.begin() + 1;
upd(i);
}
for (int i = 1; i <= N; i++) {
auto tmp = qry(R[i]);
if (tmp.second != LLONG_MAX) adj[tmp.second].pb(i);
}
for (int i = 1; i <= N; i++)
if (!vis[i]) dfs(i);
for (int i = 1; i <= 2 * N; i++)
mx[L[i]] = max(mx[L[i]], mp(dep[i] + 1, i));
for (int i = 2 * N; i >= 1; i--) mx[i] = max(mx[i], mx[i + 1]);
untaken.emplace(1, 2 * N);
curr = get(1, 2 * N);
if (get(1, 2 * N) < K) return cout << "-1\n", 0;
for (int i = 1, cnt = 0; i <= N; i++) {
int x = forceadd(i);
if (x >= K) {
cout << i << '\n';
cnt++;
if (cnt == K) return 0;
forceadd(i, 1);
}
}
}
Compilation message
event2.cpp:86:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
86 | main() {
| ^~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
58 ms |
133344 KB |
Output is correct |
2 |
Correct |
61 ms |
133356 KB |
Output is correct |
3 |
Correct |
59 ms |
133320 KB |
Output is correct |
4 |
Execution timed out |
3086 ms |
195312 KB |
Time limit exceeded |
5 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
61 ms |
133324 KB |
Output is correct |
2 |
Correct |
68 ms |
133388 KB |
Output is correct |
3 |
Correct |
67 ms |
133360 KB |
Output is correct |
4 |
Correct |
60 ms |
133304 KB |
Output is correct |
5 |
Correct |
59 ms |
133376 KB |
Output is correct |
6 |
Correct |
69 ms |
133456 KB |
Output is correct |
7 |
Correct |
60 ms |
133416 KB |
Output is correct |
8 |
Correct |
65 ms |
133316 KB |
Output is correct |
9 |
Correct |
58 ms |
133308 KB |
Output is correct |
10 |
Correct |
63 ms |
133300 KB |
Output is correct |
11 |
Correct |
58 ms |
133416 KB |
Output is correct |
12 |
Correct |
58 ms |
133316 KB |
Output is correct |
13 |
Correct |
66 ms |
133388 KB |
Output is correct |
14 |
Correct |
60 ms |
133324 KB |
Output is correct |
15 |
Correct |
72 ms |
133388 KB |
Output is correct |
16 |
Correct |
60 ms |
133316 KB |
Output is correct |
17 |
Correct |
66 ms |
133308 KB |
Output is correct |
18 |
Correct |
62 ms |
133392 KB |
Output is correct |
19 |
Correct |
64 ms |
133332 KB |
Output is correct |
20 |
Correct |
61 ms |
133332 KB |
Output is correct |
21 |
Correct |
63 ms |
133368 KB |
Output is correct |
22 |
Correct |
60 ms |
133312 KB |
Output is correct |
23 |
Correct |
64 ms |
133388 KB |
Output is correct |
24 |
Correct |
60 ms |
133364 KB |
Output is correct |
25 |
Correct |
60 ms |
133332 KB |
Output is correct |
26 |
Correct |
61 ms |
133372 KB |
Output is correct |
27 |
Correct |
62 ms |
133392 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
61 ms |
133324 KB |
Output is correct |
2 |
Correct |
68 ms |
133388 KB |
Output is correct |
3 |
Correct |
67 ms |
133360 KB |
Output is correct |
4 |
Correct |
60 ms |
133304 KB |
Output is correct |
5 |
Correct |
59 ms |
133376 KB |
Output is correct |
6 |
Correct |
69 ms |
133456 KB |
Output is correct |
7 |
Correct |
60 ms |
133416 KB |
Output is correct |
8 |
Correct |
65 ms |
133316 KB |
Output is correct |
9 |
Correct |
58 ms |
133308 KB |
Output is correct |
10 |
Correct |
63 ms |
133300 KB |
Output is correct |
11 |
Correct |
58 ms |
133416 KB |
Output is correct |
12 |
Correct |
58 ms |
133316 KB |
Output is correct |
13 |
Correct |
66 ms |
133388 KB |
Output is correct |
14 |
Correct |
60 ms |
133324 KB |
Output is correct |
15 |
Correct |
72 ms |
133388 KB |
Output is correct |
16 |
Correct |
60 ms |
133316 KB |
Output is correct |
17 |
Correct |
66 ms |
133308 KB |
Output is correct |
18 |
Correct |
62 ms |
133392 KB |
Output is correct |
19 |
Correct |
64 ms |
133332 KB |
Output is correct |
20 |
Correct |
61 ms |
133332 KB |
Output is correct |
21 |
Correct |
63 ms |
133368 KB |
Output is correct |
22 |
Correct |
60 ms |
133312 KB |
Output is correct |
23 |
Correct |
64 ms |
133388 KB |
Output is correct |
24 |
Correct |
60 ms |
133364 KB |
Output is correct |
25 |
Correct |
60 ms |
133332 KB |
Output is correct |
26 |
Correct |
61 ms |
133372 KB |
Output is correct |
27 |
Correct |
62 ms |
133392 KB |
Output is correct |
28 |
Correct |
67 ms |
134832 KB |
Output is correct |
29 |
Correct |
72 ms |
134796 KB |
Output is correct |
30 |
Correct |
74 ms |
134768 KB |
Output is correct |
31 |
Correct |
69 ms |
134800 KB |
Output is correct |
32 |
Correct |
68 ms |
134780 KB |
Output is correct |
33 |
Correct |
67 ms |
134712 KB |
Output is correct |
34 |
Correct |
67 ms |
134736 KB |
Output is correct |
35 |
Correct |
81 ms |
135288 KB |
Output is correct |
36 |
Correct |
74 ms |
135292 KB |
Output is correct |
37 |
Correct |
87 ms |
135196 KB |
Output is correct |
38 |
Correct |
83 ms |
135000 KB |
Output is correct |
39 |
Correct |
73 ms |
135252 KB |
Output is correct |
40 |
Correct |
83 ms |
135220 KB |
Output is correct |
41 |
Correct |
77 ms |
135152 KB |
Output is correct |
42 |
Correct |
74 ms |
134980 KB |
Output is correct |
43 |
Correct |
69 ms |
134912 KB |
Output is correct |
44 |
Correct |
70 ms |
134872 KB |
Output is correct |
45 |
Correct |
70 ms |
134980 KB |
Output is correct |
46 |
Correct |
72 ms |
134948 KB |
Output is correct |
47 |
Correct |
67 ms |
134796 KB |
Output is correct |
48 |
Correct |
67 ms |
134880 KB |
Output is correct |
49 |
Correct |
66 ms |
134804 KB |
Output is correct |
50 |
Correct |
68 ms |
134864 KB |
Output is correct |
51 |
Correct |
80 ms |
134808 KB |
Output is correct |
52 |
Correct |
66 ms |
134848 KB |
Output is correct |
53 |
Correct |
66 ms |
134852 KB |
Output is correct |
54 |
Correct |
64 ms |
134852 KB |
Output is correct |
55 |
Correct |
472 ms |
135216 KB |
Output is correct |
56 |
Correct |
467 ms |
135108 KB |
Output is correct |
57 |
Correct |
468 ms |
135104 KB |
Output is correct |
58 |
Correct |
480 ms |
135184 KB |
Output is correct |
59 |
Correct |
461 ms |
135108 KB |
Output is correct |
60 |
Correct |
489 ms |
135148 KB |
Output is correct |
61 |
Correct |
472 ms |
135108 KB |
Output is correct |
62 |
Correct |
514 ms |
135116 KB |
Output is correct |
63 |
Correct |
464 ms |
135132 KB |
Output is correct |
64 |
Correct |
467 ms |
134880 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
58 ms |
133344 KB |
Output is correct |
2 |
Correct |
61 ms |
133356 KB |
Output is correct |
3 |
Correct |
59 ms |
133320 KB |
Output is correct |
4 |
Execution timed out |
3086 ms |
195312 KB |
Time limit exceeded |
5 |
Halted |
0 ms |
0 KB |
- |