Pagini recente » Istoria paginii utilizator/anacernea | Cod sursa (job #1848897) | Monitorul de evaluare | Cod sursa (job #1291250) | Cod sursa (job #984114)
Cod sursa(job #984114)
#include <fstream>
#include <algorithm>
#define Inf 2000000001
using namespace std;
ifstream f("trapez.in");
ofstream g("trapez.out");
pair<int,int> Array[1002];
long double Pant[1000002];
int N,k;
long long Result;
void Read()
{
f>>N;
int i;
for(i=1;i<=N;i++)
f>>Array[i].first>>Array[i].second;
}
void Count_Pants()
{
int i,j,aux=0;
for(i=1;i<=N;i++)
for(j=i+1;j<=N;j++)
{
if(Array[j].first!=Array[i].first)
Pant[++k]=(long double)(Array[j].second-Array[i].second)/(long double)(Array[j].first-Array[i].first);
else
Pant[++k]=Inf+aux,aux++;
}
sort(Pant+1,Pant+k+1);
}
void Solve()
{
int i,counter=1;
for(i=2;i<=k;i++)
{
if(Pant[i]==Pant[i-1])
counter++;
else
{
Result+=counter*(counter-1)/2;
counter=1;
}
}
Result+=counter*(counter-1)/2;
g<<Result<<"\n";
}
int main()
{
Read();
Count_Pants();
Solve();
return 0;
}