#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
//#include<bits/extc++.h>
//__gnu_pbds
struct seg{
int l;
int r;
int ind;
};
vector<seg> arr;
vector<bool> taken;
vector<int> frontans;
vector<int> backans;
vector<int> frontord;
vector<int> backord;
int n;
void rebuilt(){
for(int i=0;i<n;i++){
frontans[i]=0;
backans[i]=0;
}
int prev = -1;
for(int i=0;i<n;i++){
if(arr[frontord[i]].l<prev || taken[frontord[i]]){
if(i) frontans[i] = frontans[i-1];
else frontans[i]=0;
}else{
if(i) frontans[i] = frontans[i-1]+1;
else frontans[i]=1;
prev = arr[frontord[i]].r;
}
}
prev = 1e9;
for(int i=0;i<n;i++){
if(arr[backord[i]].r>prev || taken[backord[i]]) {
if(i) backans[i] = backans[i-1];
else backans[i]=0;
}else{
if(i) backans[i] = backans[i-1]+1;
else backans[i]=1;
prev = arr[backord[i]].l;
}
}
}
int main(){
ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int K;cin>>n>>K;
arr.resize(n+1);
taken.resize(n+1);
frontans.resize(n+1);
backans.resize(n+1);
for(int i=1;i<=n;i++){
int a,b;cin>>a>>b;
arr[i].l = a;
arr[i].r = b;
arr[i].ind = i;
}
for(int i=1;i<=n;i++) frontord.push_back(i);
for(int i=1;i<=n;i++) backord.push_back(i);
sort(frontord.begin(),frontord.end(),[&](const int &a,const int &b){return arr[a].r<arr[b].r;});
sort(backord.begin(),backord.end(),[&](const int &a,const int &b){return arr[a].l>arr[b].l;});
rebuilt();
for(int i=1;i<=n;i++){
if(taken[i]) continue;
/*
cout<<i<<":"<<"\n";
for(int i=0;i<n;i++){
cout<<frontans[i]<<" ";
}
cout<<"\n";
for(int i=0;i<n;i++){
cout<<backans[i]<<" ";
}
cout<<"\n";
//if(taken[i]) continue;
*/
if(K==0) return 0;
int total = 1;
int l = -1;int r = n;
while(r-l>1){
int mid = (l+r)/2;
if(arr[frontord[mid]].r<=arr[i].l) l = mid;
else r = mid;
}
total+=(l<0)?(0):frontans[l];
l = -1;r = n;
while(r-l>1){
int mid = (l+r)/2;
if(arr[backord[mid]].l>=arr[i].r) l = mid;
else r = mid;
}
total+=(l<0)?(0):backans[l];
if(total>=K){
cout<<i<<"\n";
K--;
for(int p=1;p<=n;p++){
if(max(arr[p].l,arr[i].l)<min(arr[p].r,arr[i].r)) taken[p]=1;
}
}else{
taken[i]=1;
}
rebuilt();
}
if(K) cout<<-1<<"\n";
return 0;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Execution timed out |
3081 ms |
3352 KB |
Time limit exceeded |
5 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
600 KB |
Output is correct |
4 |
Correct |
0 ms |
344 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
0 ms |
348 KB |
Output is correct |
8 |
Correct |
1 ms |
348 KB |
Output is correct |
9 |
Correct |
0 ms |
348 KB |
Output is correct |
10 |
Correct |
0 ms |
452 KB |
Output is correct |
11 |
Correct |
0 ms |
348 KB |
Output is correct |
12 |
Correct |
0 ms |
348 KB |
Output is correct |
13 |
Correct |
0 ms |
348 KB |
Output is correct |
14 |
Correct |
0 ms |
348 KB |
Output is correct |
15 |
Correct |
0 ms |
348 KB |
Output is correct |
16 |
Correct |
0 ms |
348 KB |
Output is correct |
17 |
Correct |
0 ms |
348 KB |
Output is correct |
18 |
Correct |
1 ms |
500 KB |
Output is correct |
19 |
Correct |
0 ms |
348 KB |
Output is correct |
20 |
Correct |
0 ms |
348 KB |
Output is correct |
21 |
Correct |
0 ms |
348 KB |
Output is correct |
22 |
Correct |
0 ms |
348 KB |
Output is correct |
23 |
Correct |
0 ms |
348 KB |
Output is correct |
24 |
Correct |
0 ms |
348 KB |
Output is correct |
25 |
Correct |
0 ms |
348 KB |
Output is correct |
26 |
Correct |
0 ms |
452 KB |
Output is correct |
27 |
Correct |
0 ms |
348 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
600 KB |
Output is correct |
4 |
Correct |
0 ms |
344 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
0 ms |
348 KB |
Output is correct |
8 |
Correct |
1 ms |
348 KB |
Output is correct |
9 |
Correct |
0 ms |
348 KB |
Output is correct |
10 |
Correct |
0 ms |
452 KB |
Output is correct |
11 |
Correct |
0 ms |
348 KB |
Output is correct |
12 |
Correct |
0 ms |
348 KB |
Output is correct |
13 |
Correct |
0 ms |
348 KB |
Output is correct |
14 |
Correct |
0 ms |
348 KB |
Output is correct |
15 |
Correct |
0 ms |
348 KB |
Output is correct |
16 |
Correct |
0 ms |
348 KB |
Output is correct |
17 |
Correct |
0 ms |
348 KB |
Output is correct |
18 |
Correct |
1 ms |
500 KB |
Output is correct |
19 |
Correct |
0 ms |
348 KB |
Output is correct |
20 |
Correct |
0 ms |
348 KB |
Output is correct |
21 |
Correct |
0 ms |
348 KB |
Output is correct |
22 |
Correct |
0 ms |
348 KB |
Output is correct |
23 |
Correct |
0 ms |
348 KB |
Output is correct |
24 |
Correct |
0 ms |
348 KB |
Output is correct |
25 |
Correct |
0 ms |
348 KB |
Output is correct |
26 |
Correct |
0 ms |
452 KB |
Output is correct |
27 |
Correct |
0 ms |
348 KB |
Output is correct |
28 |
Correct |
5 ms |
604 KB |
Output is correct |
29 |
Correct |
5 ms |
604 KB |
Output is correct |
30 |
Correct |
4 ms |
600 KB |
Output is correct |
31 |
Correct |
2 ms |
604 KB |
Output is correct |
32 |
Correct |
2 ms |
600 KB |
Output is correct |
33 |
Correct |
50 ms |
604 KB |
Output is correct |
34 |
Correct |
46 ms |
604 KB |
Output is correct |
35 |
Correct |
64 ms |
612 KB |
Output is correct |
36 |
Correct |
56 ms |
600 KB |
Output is correct |
37 |
Correct |
43 ms |
604 KB |
Output is correct |
38 |
Correct |
55 ms |
604 KB |
Output is correct |
39 |
Correct |
53 ms |
624 KB |
Output is correct |
40 |
Correct |
48 ms |
604 KB |
Output is correct |
41 |
Correct |
49 ms |
848 KB |
Output is correct |
42 |
Correct |
55 ms |
604 KB |
Output is correct |
43 |
Correct |
23 ms |
600 KB |
Output is correct |
44 |
Correct |
19 ms |
604 KB |
Output is correct |
45 |
Correct |
17 ms |
624 KB |
Output is correct |
46 |
Correct |
50 ms |
600 KB |
Output is correct |
47 |
Correct |
10 ms |
604 KB |
Output is correct |
48 |
Correct |
9 ms |
628 KB |
Output is correct |
49 |
Correct |
4 ms |
576 KB |
Output is correct |
50 |
Correct |
46 ms |
604 KB |
Output is correct |
51 |
Correct |
11 ms |
620 KB |
Output is correct |
52 |
Correct |
8 ms |
604 KB |
Output is correct |
53 |
Correct |
2 ms |
460 KB |
Output is correct |
54 |
Correct |
46 ms |
604 KB |
Output is correct |
55 |
Correct |
63 ms |
616 KB |
Output is correct |
56 |
Correct |
57 ms |
604 KB |
Output is correct |
57 |
Correct |
57 ms |
632 KB |
Output is correct |
58 |
Correct |
57 ms |
604 KB |
Output is correct |
59 |
Correct |
55 ms |
604 KB |
Output is correct |
60 |
Correct |
55 ms |
608 KB |
Output is correct |
61 |
Correct |
54 ms |
612 KB |
Output is correct |
62 |
Correct |
52 ms |
604 KB |
Output is correct |
63 |
Correct |
47 ms |
616 KB |
Output is correct |
64 |
Correct |
49 ms |
604 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Execution timed out |
3081 ms |
3352 KB |
Time limit exceeded |
5 |
Halted |
0 ms |
0 KB |
- |