Pagini recente » Cod sursa (job #1755581) | Cod sursa (job #1089852) | Cod sursa (job #2154200) | Cod sursa (job #4734) | Cod sursa (job #491456)
Cod sursa(job #491456)
// infoarena: problema/trapez //
#include <fstream>
#include <iostream>
#include <vector>
#include <cmath>
#define INF 1<<30
#define MAXN 1010
#define EPS 0.0001
using namespace std;
ifstream in("trapez.in");
ofstream out("trapez.out");
struct PUNCT
{
int x,y;
};
float panta(PUNCT a, PUNCT b)
{
if(a.y == b.y)
return INF;
return 1.00*(a.x-b.x)/(a.y-b.y);
}
vector<float> c;
vector<float>::iterator it;
PUNCT p[MAXN];
int n,i,j,s,pc,num;
int main()
{
in>>n;
for(i=1; i<=n; i++)
in>>p[i].x>>p[i].y;
for(i=1; i<n; i++)
for(j=i+1; j<=n; j++)
c.push_back(panta(p[i], p[j]));
sort(c.begin(), c.end());
for(it = c.begin(); it!=c.end(); ++it)
cout<<*it<<' ';
it = c.begin();
pc = *it;
num = 1;
for(++it; it!=c.end(); ++it)
if(abs(pc - *it) <= EPS)
++num;
else
{
pc = *it;
s += num * (num - 1) / 2;
num = 1;
}
out<< s;
return 0;
}