Pagini recente » Cod sursa (job #2424709) | Cod sursa (job #425723) | Cod sursa (job #2901608) | Cod sursa (job #552097) | Cod sursa (job #681727)
Cod sursa(job #681727)
#include <stdio.h>
#include <algorithm>
#include <cmath>
#define INF 10000000000.0
using namespace std;
const double eps = 1e-12;
int n,i,j;
int A[1005],B[1005];
int q,rez,cont;
double NOU[1000005];
FILE *f,*g;
double do_it(int a, int b)
{
if (A[a]==A[b])
return INF;
//return (1.0 * (d - c)) / (1.0 * (b - a));
return (1.0 * (B[b] - B[a])) / (1.0 * (A[b] - A[a]));
}
int equal(double a, double b)
{
if (fabs(a-b)<=eps)
return 1;
return 0;
}
int main()
{
f=fopen("trapez.in","r");
g=fopen("trapez.out","w");
fscanf(f,"%d",&n);
for (i=1;i<=n;++i)
fscanf(f,"%d%d",&A[i],&B[i]);
q=0;
for (i=1;i<=n-1;++i)
for (j=i;j<=n;++j)
{
q++;
NOU[q]=do_it(i,j);
}
sort(NOU+1,NOU+q+1);
rez=cont=0;
for (i=1;i<=q-1;++i)
if (equal(NOU[i],NOU[i+1]))
cont++;
else
{
rez+=cont*(cont+1)/2;
cont=0;
}
fprintf(g,"%d\n",rez);
fclose(f);
fclose(g);
return 0;
}