Cod sursa(job #736451)

Utilizator SebiSebiPirtoaca George Sebastian SebiSebi Data 18 aprilie 2012 17:54:26
Problema Patrate 3 Scor 35
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<iostream>
#include<fstream>
#include<vector>
#include<math.h>
#include<algorithm>
using namespace std;
#define mod 1001
struct punct {
	float x,y;
};
vector <punct> v[mod];
punct a[1001];
inline float modul(float a)
{
	if(a>=0)
		return a;
	else return -a;
}
inline void adauga(punct x)
{
	int k;
	k=(int)(x.x+x.y)%mod;
	if(k<0)
		k=-k;
	v[k].push_back(x);
}
inline int cauta(punct x)
{
	int n,i,k;
	k=(int)(x.x+x.y)%mod;
	if(k<0)
		k=-k;
	n=v[k].size()-1;
	for(i=0;i<=n;i++) {
		if((v[k][i].x==x.x)&&(v[k][i].y==x.y))
			return 1;
	}
	return 0;
}
int main ()
{
	int n,i,j,nr;
	double b;
	punct x,y;
	ifstream f("patrate3.in");
	ofstream g("patrate3.out");
	f>>n;
	for(i=1;i<=n;i++) {
		f>>b;
		a[i].x=b*10000;
		f>>b;
		a[i].y=b*10000;
		adauga(a[i]);
	}
	f.close();
	nr=0;
	for(i=1;i<n;i++) 
		for(j=i+1;j<=n;j++) {
			x.x=a[i].y-a[j].y+a[i].x;
			x.y=a[j].x-a[i].x+a[i].y;
			
			y.x=a[i].y-a[j].y+a[j].x;
			y.y=a[j].x-a[i].x+a[j].y;
			
			if((cauta(x))&&(cauta(y)))
				nr++;
		}
	g<<nr/2;
	g.close();
	return 0;
}