Cod sursa(job #735861)

Utilizator SebiSebiPirtoaca George Sebastian SebiSebi Data 17 aprilie 2012 13:40:25
Problema Patrate 3 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.39 kb
#include<iostream>
#include<fstream>
#include<math.h>
#include<algorithm>
using namespace std;
struct patrat {
	double d;
	short p1,p2;
};
struct punct {
	double x,y;
};
patrat v[1000001];
punct a[1001];
inline bool cmp(const patrat a, const patrat b) {
	return a.d<b.d;
}
inline int cauta(int p, int n, patrat x)
{
	int i,pd,pd1,pd2,q,mij;
	q=n;
	while (p<=q) {
		mij=(p+q)/2;
		if(v[mij].d>x.d)
			q=mij-1;
		else if(v[mij].d<x.d)
			p=mij+1;
		else break;
	}
	if(p>q)
		return 0;
	pd=0;
	pd1=0;
	pd2=0;
	i=p;
	while((v[i].d==x.d)&&(i<=n)) {
		if(x.d==v[i].d) {
			if((x.p1!=v[i].p1)&&(x.p1!=v[i].p2)&&(x.p2!=v[i].p1)&&(x.p2!=v[i].p2)) 
				pd++;
			else if((x.p1!=v[i].p1)&&(x.p1!=v[i].p2)&&((x.p2==v[i].p2)||(x.p2==v[i].p1)))
				pd2++;
			else if((x.p2!=v[i].p1)&&(x.p2!=v[i].p2)&&((x.p1==v[i].p2)||(x.p1=v[i].p1)))
				pd1++;
		}
		i++;
	}
	if((pd>=2)&&(pd2>=2)&&(pd1>=2))
		return 2;
	if((pd>=1)&&(pd2>=1)&&(pd1>=1))
		return 1;
	return 0;
}
int main ()
{
	int n,i,j,nr,l;
	patrat x;
	ifstream f("patrate3.in");
	ofstream g("patrate3.out");
	f>>n;
	for(i=1;i<=n;i++) 
		f>>a[i].x>>a[i].y;
	f.close();
	l=0;
	for(i=1;i<=n-1;i++) 
		for(j=i+1;j<=n;j++) {
			l++;
			v[l].d=(float)sqrt((float)(a[i].x-a[j].x)*(a[i].x-a[j].x)+(float)(a[i].y-a[j].y)*(a[i].y-a[j].y));
			v[l].p1=i;
			v[l].p2=j;
		}
	sort(v+1,v+l+1,cmp);
	g.close();
	return 0;
}