Pagini recente » Cod sursa (job #718970) | Cod sursa (job #952044) | Cod sursa (job #1520024) | Rating Alexandru Donc (AlexTheD) | Cod sursa (job #1489493)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f ("trapez.in");
ofstream g ("trapez.out");
struct point
{
unsigned x,y;
}v[1005];
int n,i,j,k,nr;
struct asd
{
long long a,b;
}p[1000010];
int poz(int ls, int ld)
{
int i=ls,j=ld,sw=1;
while (i<j)
{
if (p[i].a*p[j].b>p[i].b*p[j].a)
{
p[0]=p[i];
p[i]=p[j];
p[j]=p[0];
sw=!sw;
}
i+=sw;
j-=!sw;
}
return i;
}
void quick(int ls, int ld)
{
int p;
if (ls<ld)
{
p=poz(ls,ld);
quick(ls,p-1);
quick(p+1,ld);
}
}
int main()
{
f>>n;
k=0;
for (i=1;i<=n;i++)
f>>v[i].x>>v[i].y;
for (i=1;i<n;i++)
for (j=i+1;j<=n;j++)
{
k++;
p[k].a=v[j].y-v[i].y;
p[k].b=v[j].x-v[i].x;
}
quick(1,k);
for (i=1;i<k;i++)
{
j=i+1;
while (p[i].a*p[j].b==p[i].b*p[j].a&&j<=k)
{
j++;
nr++;
}
}
g<<nr;
return 0;
}