Pagini recente » Cod sursa (job #2326723) | Cod sursa (job #818586) | Cod sursa (job #3292120) | Cod sursa (job #1328243) | Cod sursa (job #1803081)
#include <iostream>
#include <fstream>
#include <vector>
#define FOR(i,a,b) for(int i=a; i<=b; i++)
#define MMAX 999999999
#include<bits/stdc++.h>
using namespace std;
long N;
struct punct
{
long x,y;
};
vector<punct> p;
vector<float> m;
void citire()
{
ifstream f("trapez.in");
f>>N;
FOR(i,0,N-1)
{
punct P;
f>>P.x>>P.y;
p.push_back(P);
}
f.close();
}
void afisare(unsigned x)
{
ofstream g("trapez.out");
g<<x<<'\n';
FOR(i,0,m.size()-1)
g<<m[i]<<" ";
g.close();
}
float panta(punct a, punct b)
{
if((b.x-a.x)==0) return MMAX;
float pan=(float)(b.y-a.y)/(b.x-a.x);
return pan;
}
void constructie_pante()
{
FOR(i,0,N-1)
{
FOR(j,i+1,N-1)
{
m.push_back(panta(p[i],p[j]));
}
}
sort(m.begin(),m.end());
}
int determina_trapeze()
{
unsigned k=0,t;
FOR(i,0, m.size() - 2)
{
t=0;
while(m[i]==m[i+1]){t++;i++;}
t=t*(t+1)/2;
k+=t;
}
return k;
}
int main()
{
citire();
constructie_pante();
afisare(determina_trapeze());
return 0;
}