Cod sursa(job #348826)

Utilizator alin.predoiAlin Predoi alin.predoi Data 17 septembrie 2009 03:58:21
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.63 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;

 typedef vector<int> vi; 
 typedef vector<vi> vvi; 
 typedef pair<int,int> ii; 
typedef pair<long long, long long> ll;
 #define sz(a) int((a).size()) 
 #define pb push_back 
 #define all(c) (c).begin(),(c).end() 
 #define tr(c,i) for(typeof((c).begin() i = (c).begin(); i != (c).end(); i++) 
 #define present(c,x) ((c).find(x) != (c).end()) 
 #define cpresent(c,x) (find(all(c),x) != (c).end()) 1

#define NMAX 1000
vector<ll >coord(NMAX);
vector<vector<ll > >tg(NMAX,vector<ll >(NMAX));
int n;
	
int cmmdc (ll x) {
	ll  y;
	y.first=abs(x.first);
	y.second=abs(x.first);
	if(y.first*y.second == 0)	return 1;

	while (y.first != y.second) {
		if (y.first>y.second)	y.first-=y.second;
		else if (y.second>y.first) y.second-=y.first;
	}
	return (int)y.first;
}
void sim (ll x) {
	int a;
	a = cmmdc(x);
}

int main() {

	fstream f,g;
	f.open("trapez.in", fstream::in);
	g.open("trapez.out", fstream::out);
	
	f>>n;	

	for (int i=1;i<=n;i++)
		f>>coord[i].first>>coord[i].second;	

	for (int i=1;i<=n;i++)
		for (int j=i+1;j<=n;j++) {
			if (coord[i].second==coord[j].second)	tg[i][j]=make_pair(0,0);
			else if (coord[i].first==coord[j].first) tg[i][j]=make_pair(-1,1);
			else	{
				tg[i][j]=make_pair(coord[j].first-coord[i].first,coord[j].second-coord[i].second);
				sim(tg[i][j]);
			}
		}
	int nr=0;
	for (int i=1;i<=n;i++)
		for (int j=i+1;j<=n;j++)
			for (int k=i+1;k<=n;k++)
				for (int l=k+1;l<=n;l++)
					if(i!=k && i!=l && j!=k && j!=l && tg[i][j] == tg[k][l])
						nr++;
	g<<nr;

	f.close();
	g.close();	
return 0;
}