<pre name="code" class="cpp">#include<cstdio>
#include<algorithm>
using namespace std;
struct point
{
__int64 x;
__int64 y;
} data[220022];
bool cmp1(point x,point y)
{
return x.x<y.x||(x.x==y.x&&x.y<y.y); // 对x大小排序
}
bool cmp2(point x,point y)
{
return x.y<y.y||(x.y==y.y&&x.x<y.x); //对y大小排序
}
int main()
{
__int64 n,ans;
scanf("%I64d",&n);
ans=0;
for(int i=1;i<=n;i++)
{
scanf("%d%d",&data[i].x,&data[i].y);
}
int m=0;
sort(data+1,data+n+1,cmp1);
for(int i=1;i<n;i++)
{
if(data[i].x==data[i+1].x) //x相等的
{
m++;
ans=ans+m;
}
else
m=0;
}
m=0;
sort(data+1,data+1+n,cmp2);
for(int i=1;i<n;i++)
{
if(data[i].y==data[i+1].y) //y相等的
{
m++;
ans+=m;
}
else
m=0;
}
m=0;
for(int i=1;i<n;i++)
{
if(data[i].x==data[i+1].x&&data[i].y==data[i+1].y) //减去重复的点
{
m++;
ans=ans-m;
}
else
m=0;
}
printf("%I64d\n",ans);
return 0;
}
【Codeforces】-651C -Watchmen
最新推荐文章于 2019-06-09 21:57:00 发布