Pagini recente » Cod sursa (job #1901840) | Cod sursa (job #1691814) | Cod sursa (job #1905061) | ip | Cod sursa (job #1489475)
#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
{
int m,x;
}p[1000010];
int poz(int ls, int ld)
{
int i=ls,j=ld,sw=1;
while (i<j)
{
if ((float)p[i].m/p[i].x>(float)p[j].m/p[j].x)
{
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].m=v[j].y-v[i].y;
p[k].x=v[j].x-v[i].x;
}
quick(1,k);
for (i=1;i<k;i++)
{
j=i+1;
while (p[i].m*p[j].x==p[j].m*p[i].x)
{
j++;
nr++;
}
}
/*for (i=1;i<k;i++)
for (j=i+1;j<=k;j++)
if (p[i].m*p[j].x==p[j].m*p[i].x) nr++;*/
g<<nr;
return 0;
}