#include<bits/stdc++.h>
using namespace std;
using ll = long long;
using db = double;
using ull = unsigned long long;
using ldb = long double;
using pii = pair<int,int>;
struct node
{
int a,b,c;
};
void solve()
{
int n ;
cin >> n;
vector<node> a(n);
priority_queue<pii,vector<pii>,greater<>> q;
for ( int i = 0; i < n; i ++ )
{
cin >> a[i].a >> a[i].b;
a[i].c = i + 1;
}
sort(a.begin(), a.end(), [](const node & x1 , const node & x2)
{
if( x1.a == x2.a ) return x1.b < x2.b;
else return x1.a < x2.a;
});
int cnt = 0;
vector<int> ans;
for ( int i = 0; i < n; i ++ )
{
while ( cnt < n && a[cnt].a <= i)
{
q.push({a[cnt].b,a[cnt].c});
cnt ++;
}
while(q.size() && q.top().first < i )
{
q.pop();
}
if(q.empty()) break;
ans.push_back(q.top().second);
q.pop();
}
cout << ans.size() << endl;
for( auto it : ans ) cout << it << ' ';
cout << endl;
}
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
solve();
}
2024河北ccpc-c
最新推荐文章于 2024-08-20 20:01:22 发布