Cod sursa(job #717851)

Utilizator Gady_paulGafton Paul Gady_paul Data 20 martie 2012 11:45:03
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<cstdio>
#include<vector>
#include<algorithm>
#include<iostream>

#define INF -1

using namespace std;

struct point{
	int x;
	int y;
};

vector<point> read(){

	FILE *f;
	f=fopen("trapez.in", "r");

	int n;
	fscanf(f, "%d", &n);

	vector<point> a(n);

	for(int i=0; i<n; i++)
		fscanf(f, "%d %d", &a[i].x, &a[i].y);

	fclose(f);

	return a;
}

vector<double> compute(vector<point> a){

	vector<double> k;

	for(unsigned int i=0; i<a.size()-1; i++)
		for(unsigned j=i+1; j<a.size(); j++){
			cout<<a[i].y<<' '<<a[j].y<<' '<<a[i].x<<' '<<a[j].x<<'\n';
			if((a[i].x-a[j].x)!=0)
				k.push_back((double)(a[i].y-a[j].y)/(a[i].x-a[j].x));
			else{
				k.push_back(INF);
			}
		}
		
	return k;

}

int count(vector<double> k){

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

	int c=1;

	for(int i=0; i<k.size(); i++)
		cout<<k[i]<<' ';

	for(int i=0; i<k.size()-1; i++)
		if(k[i]==k[i+1])
			c++;

	return c;
}

void print(int c){
	
	FILE *g;
	g=fopen("trapez.out", "w");

	fprintf(g, "%d\n", (c*(c-1))/2);

	fclose(g);
}

int main(){

	vector<point> a=read();
	vector<double> b=compute(a);
	int c=count(b);
	print(c);

	return 0;
}