#include <bits/stdc++.h>
using namespace std;
#define int long long
signed main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n, k;
cin >> n >> k;
vector<pair<int, int>> events(n);
vector<tuple<int, bool, int>> sweep;
for (int i = 0; i < n; i++) {
int l, r;
cin >> l >> r;
events[i] = {l, r};
sweep.push_back({l, 1, i});
sweep.push_back({r, 0, i});
}
sort(sweep.rbegin(), sweep.rend());
int prev = 0;
vector<int> dp(n, 0);
for (auto [x, state, i] : sweep) {
if (state == 1) {
prev = max(prev, dp[i]);
} else {
dp[i] = prev+1;
}
//~ cout << x << " " << i << " " << state << " " << prev << " " << dp[i] << endl;
}
if (dp[0] < k) {
cout << -1;
return 0;
}
prev = 0;
int need = k;
vector<int> ans;
for (int i = 0; i < n && need > 0; i++) {
//~ cout << need << " " << prev << " " << dp[i] << " " << events[i].first << " " << events[i].second << endl;
if (dp[i] >= need && events[i].first >= prev) {
ans.push_back(i+1);
need--;
prev = events[i].second;
}
}
for (int i : ans) cout << i << endl;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |