[ブラシノート]Codeforces 181 Bは、ある点が存在するか否かを検出する
1124 ワード
テーマ:Codeforces 181 B
アドレス:http://codeforces.com/submissions/GreyCrow/page/1
N組の点を与えて、これらの点の中にいくつの点が他の2点の中点であることを聞きます
心得:初めて暴力が果敢にタイムアウトした. 好方法放弃[无法]じòぴé 他の人のコードがこのように点が存在するかどうかをマークすることができます. は配列ex[n][n]を確立し、初期値はすべてゼロである.ex[a][b]=1であっても、1つの点(a,b)を読み込むたびに、
コード:
アドレス:http://codeforces.com/submissions/GreyCrow/page/1
N組の点を与えて、これらの点の中にいくつの点が他の2点の中点であることを聞きます
心得:
コード:
#include <algorithm>
#include<iostream>
using namespace std;
struct stu
{
int a;
int b;
}pt[3005];
int cmp(stu a,stu b)
{
if(a.a!=b.a)
return a.a<b.a;
else
return a.b<b.b;
}
int a[2*3005][2*3005] = {0};
int main()
{
int i, j, n, cnt;
cin>>n;
for(i=0;i<n;i++)
scanf("%d %d", &pt[i].a, &pt[i].b),a[pt[i].a+3005][pt[i].b+3005]=1;//
sort(pt,pt+n,cmp);
cnt = 0;
for(i=0;i<n-1;i++)
for(j=i+2;j<n;j++)
{
if((pt[i].a+pt[j].a)%2||(pt[i].b+pt[j].b)%2)
continue;
cnt+=a[(pt[i].a+pt[j].a)/2+3005][(pt[i].b+pt[j].b)/2+3005];//
}
printf("%d
", cnt);
}