#include <bits/stdc++.h>
using namespace std;
void speed()
{
ios_base::sync_with_stdio(NULL);
cin.tie(nullptr);
cout.tie(nullptr);
}
struct segm
{
int first,second,i;
segm(){}
segm(int f,int s,int id)
{
first=f;
second=s;
i=id;
}
};
int intersect(segm s,pair<int,int> p)
{
return s.first==p.first&&s.second==p.second||s.first>p.first&&s.first<p.second||s.second>p.first&&s.second<p.second||
p.first>s.first&&p.first<s.second||p.second>s.first&&p.second<s.second;
}
int n,k;
segm p[200001];
pair<int,int> a[200001];
vector<int> h;
map<int,int> mp;
bool cmp(segm s1,segm s2)
{
return s1.first<s2.first;
}
void read()
{
cin>>n>>k;
for(int i=1;i<=n;i++)
{
cin>>p[i].first>>p[i].second;
h.push_back(p[i].first);
h.push_back(p[i].second);
}
sort(h.begin(),h.end());
int num=0;
for(int i=0;i<2*n;i++)
{
if(i==1||h[i]!=h[i-1])num++;
mp[h[i]]=num;
}
for(int i=1;i<=n;i++)
{
p[i].first=mp[p[i].first];
p[i].second=mp[p[i].second];
p[i].i=i;
a[i].first=p[i].first;
a[i].second=p[i].second;
}
sort(p+1,p+n+1,cmp);
}
int dp[200001];
vector<int> ans;
int u[200001],u1[200001];
void solve()
{
/*for(int i=1;i<=n;i++)
cout<<a[i].first<<" "<<a[i].second<<endl;
cout<<"---"<<endl;
for(int i=1;i<=n;i++)
cout<<p[i].first<<" "<<p[i].second<<endl;
cout<<"---"<<endl;*/
for(int i=1;i<=n;i++)
{
if(ans.size()==k)break;
if(u[i])continue;
for(int j=1;j<=2*n;j++)
u1[j]=dp[j]=0;
for(int j=1;j<=n;j++)
{
if(intersect(p[j],a[i]))
u1[p[j].i]=1;
}
int maxx=1,pt=0;
for(int j=1;j<=n;j++)
{
int id=p[j].i;
if(u[id]||u1[id])continue;
while(pt<=p[j].first)
{
maxx=max(maxx,dp[pt]);
pt++;
}
dp[p[j].second]=max(dp[p[j].second],maxx+1);
}
while(pt<=2*n)
{
maxx=max(maxx,dp[pt]);
pt++;
}
/*for(int j=1;j<=n;j++)
cout<<max(u[j],u1[j])<<" ";
cout<<endl;
cout<<i<<" "<<maxx<<endl;*/
if(maxx>=k-ans.size())
{
ans.push_back(i);
for(int j=1;j<=2*n;j++)
u[j]=max(u[j],u1[j]);
}
}
if(ans.size()<k)cout<<-1<<endl;
else
for(int i=0;i<ans.size();i++)
{
cout<<ans[i]<<endl;
}
}
int main()
{
speed();
read();
solve();
return 0;
}
| # | 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... |