Cod sursa(job #717812)

Utilizator ovidiustiruOvidiu Ioan Stiru ovidiustiru Data 20 martie 2012 11:25:02
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <algorithm>
#include <vector>

using namespace std;
vector <double> p;
long long n,nr=0,ct=0,ct1=0,ct2=0;
double x[1001],y[1001],k=0;


int main(){
	
	ifstream fin("trapez.in");
	fin >>n;
	
	for (int i=0;i<n;i++){
		fin >> x[i]>>y[i];
	}

	fin.close();

	for(int i=0;i<n-1;i++){
		for(int j=i+1;j<n;j++){
			if((x[i]==x[j])||(y[i]==y[j])){
				if(x[i]==x[j])ct1++;
				if(y[i]==y[j])ct2++;
			}else{
				p.push_back((y[i]-y[j])/(x[i]-x[j]));
			}
		}
	}
	if (ct1!=0)nr+=ct1*(ct1-1)/2;
	if (ct2!=0)nr+=ct2*(ct2-1)/2;

	sort(p.begin(),p.end());

	int l=p.size();
	k=p[0];
	ct++;
	for (int i=1;i<l;i++){
		if (k!=p[i]){
			k=p[i];
			nr+=ct*(ct-1)/2;
			ct=1;
		}else ct++;
	}
	/*for (int i=0;i<l-1;i++){
		for(int j=i+1;j<l;j++){
			if((p1[i]*p2[j])==(p2[i]*p1[j]))nr++;
		}
	}*/

	ofstream fout("trapez.out");
	fout << nr;
	fclose(stdout);
	
	return 0;
}