1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #define LL long long 5 6 using namespace std; 7 8 struct node{ 9 int x,y; 10 }; 11 node s[100010]; 12 int ans[100010]; 13 bool cmp(node a,node b) //排序 14 { 15 if(a.y<b.y) 16 return true; 17 else 18 { 19 if(a.y==b.y) 20 return a.x>b.x; 21 else 22 return false; 23 24 } 25 } 26 27 int main() 28 { 29 int n,t,j,c;//t记录选择区间的最后点 c记录总个数 30 scanf("%d",&n); 31 for(int i=1;i<=n;i++) 32 scanf("%d%d",&s[i].x,&s[i].y); 33 sort(s+1,s+1+n,cmp); 34 //for(int i=1;i<=n;i++) 35 // printf("%d %d ",s[i].x,s[i].y); 36 37 // scanf("%d",&c); 38 t=s[1].y; c=1; ans[0]=1; 39 for(int i=2;i<=n;i++) 40 { 41 if(s[i].x>t) //查找比上一个最后大的区间 42 { 43 t=s[i].y; ans[c++]=i; 44 } 45 } 46 printf("%d ",c); 47 for(int i=0;i<c;i++) 48 printf("%d ",ans[i]); 49 printf(" "); 50 return 0; 51 } 52 53