General
 
 
# Author Problem Lang Verdict Time Memory Sent Judged  
35605367 Practice:
DeaphetS
886F - 9 GNU C++11 Accepted 358 ms 2332 KB 2018-02-23 20:36:31 2018-02-23 20:36:31
→ Source
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#define N 2001
#include<set>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define mp make_pair
#define ld long double
struct rua{ld x,y;}m;
set<pair<ld,ld> >p;
vector<pair<ld,ld> >del;
vector<ld>d;
set<ld>mm;
int n,ans;
ld x,y;
bool tt;
bool check(rua T)
{
	d.clear();
	rua M={(T.x+x)/2,(T.y+y)/2};
	rua mM={M.x-m.x,M.y-m.y};
	rua r0={mM.y,-mM.x};
	if(!r0.x)if(tt)return false;else tt=true;
	ld k=r0.y/r0.x;if(mm.count(k))return false;else mm.insert(k);
	ld R=pow(r0.x*r0.x+r0.y*r0.y,0.5);
	for(auto i=p.begin();i!=p.end();i++)
	  {
	  rua mP={(*i).first-m.x,(*i).second-m.y};
	  ld t=r0.x*mP.x+r0.y*mP.y;
	  t/=r0.x*r0.x+r0.y*r0.y;
	  if(t)d.push_back(t);
	  }
	ld _=(r0.x*mM.x+r0.y*mM.y)/R;
	int l=0,r=d.size()-1;
	sort(d.begin(),d.end());
	//for(int i=l;i<=r;i++)cout<<d[i]<<" ";cout<<endl<<_<<endl<<endl;
	while(l<=r && d[l]+d[r]==0)l++,r--;//cout<<(l>r)<<endl<<endl;
	//if(l<=r)cout<<l <<" "<<r<<" "<<fabs(d[l]+d[r]-2*_)<<endl;
	return l>r;
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	  {
	  cin>>x>>y;
	  p.insert(mp(x,y));
	  m.x+=x,m.y+=y;
	  }
	m.x=m.x*1.0/n,m.y=m.y*1.0/n;
	for(auto i=p.begin();i!=p.end();i++)
	  {
	  x=(*i).first,y=(*i).second;
	  if(p.count(mp(2*m.x-x,2*m.y-y)))
	    del.push_back(mp(2*m.x-x,2*m.y-y)),del.push_back(*i);
	  }
	for(int i=0;i<del.size();i++)
	  if(p.count(del[i]))p.erase(del[i]);
	if(!p.size())return printf("-1\n"),0;
	x=(*p.begin()).first,y=(*p.begin()).second;
	for(auto i=p.begin();i!=p.end();i++)
	  if(check({(*i).first,(*i).second}))ans++;
	printf("%d\n",ans);
	return 0;
}
?
Time: ? ms, memory: ? KB
Verdict: ?
Input
?
Participant's output
?
Jury's answer
?
Checker comment
?
Diagnostics
?
Click to see test details