Cod sursa(job #305971)

Utilizator luk17Luca Bogdan luk17 Data 19 aprilie 2009 00:45:21
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<stdio.h>
#include<vector>
#include<algorithm>
#include <functional>

using namespace std;

#define NMAX 1001

int x[NMAX],y[NMAX],n;

struct dreapta
{
	int numitor,numarator;
};
vector<dreapta> m;


struct cmp : public binary_function<dreapta, dreapta, bool>
{
  bool operator()(dreapta a,dreapta b)
  {
    return a.numarator*b.numitor>a.numitor*b.numarator;
  }
};

int main()
{
	int i,j,contor=0;
	dreapta panta;
	cmp mata;
	m.reserve(NMAX*NMAX);
	freopen("trapez.in","r",stdin);
	freopen("trapez.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;i++)
		scanf("%d%d",&x[i],&y[i]);
	for(i=1;i<n;i++)
		for(j=i+1;j<=n;j++)
		{
			panta.numarator=x[j]-x[i];
			panta.numitor=y[j]-y[i];
			m.push_back(panta);
		}
		sort(m.begin(),m.end(),cmp());

	int n=m.size();
	for(i=0;i<n-1;i++)
	{
		if(!mata(m[i],m[i+1])&&!mata(m[i+1],m[i]))
			contor++;
	}
	printf("%d",contor);
	return 0;
}