Pagini recente » Cod sursa (job #192594) | Cod sursa (job #1192083) | Cod sursa (job #310630) | Cod sursa (job #565842) | Cod sursa (job #920575)
Cod sursa(job #920575)
#include <stdio.h>
#include <algorithm>
#include <math.h>
using namespace std;
FILE *f=fopen("trapez.in","r");
FILE *g=fopen("trapez.out","w");
struct nod{
int x;
int y;
}v[1004];
double nr[500010],m,h,a1,a2;
int n,i,j,a,b,k,nr1,nr2,s,ct,ok;
int main()
{
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f,"%d%d",&v[i].x,&v[i].y);
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
{
a=v[i].y-v[j].y;
b=v[j].x-v[i].x;
if (a==0)nr1++;
else if (b==0)nr2++;
else {m=(a*1.0/b);k++;nr[k]=-m;}
}
s=0;
if (nr1>0)s+=nr1*(nr1-1)/2;
if (nr2>0)s+=nr2*(nr2-1)/2;
sort(nr+1,nr+k+1);
ct=0;
for(i=1;i<=k;i++)
if (nr[i]==nr[i-1])ct++;
s+=ct*(ct-1)/2;
/*for(i=2;i<=k;i++)
{
m=1.0*fabs(nr[i]);
h=1.0*fabs(nr[i-1]);
a1=max(m,h);
a2=min(m,h);
if ((a1-a2)<0.0001)ct++;
else {s+=ct;ct=0;}
}
*/
fprintf(g,"%d",s);
fclose(g);
return 0;
}