题意:平面上的一些点,问有多少点的右上方没有点(即不存在x,y均比它大的点)。
思路:用STL中的sort排序比较快,x从小到大排,如果x相同,则y也是从小到大排序。然后比较y,若还有比前一个大的,刚+1。但是刚开始竟然提交两次都没得过,检查了几遍,才记得这些数据不能用cin,cout输入输出,这些用时较多,改为scanf,printf就得过了…………
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
struct abc
{
int a,b;
}s[50002];
bool cmp(abc x,abc y)
{
if(x.a==y.a) return x.b<y.b;
return x.a<y.a;
}
int main()
{
int n,i,m,sum;
while(scanf("%d",&n)&&n)
{
for(i=0;i<n;i++)
scanf("%d%d",&s[i].a,&s[i].b);
sort(s,s+n,cmp);
m=s[n-1].b;
sum=1;
for(i=n-2;i>=0;i--)
if(m<s[i].b) {sum++;m=s[i].b;}
printf("%d\n",sum);
}
return 0;
}