Pagini recente » Cod sursa (job #558074) | Cod sursa (job #1099576) | Cod sursa (job #3264144) | Cod sursa (job #2846408) | Cod sursa (job #327607)
Cod sursa(job #327607)
#include <stdio.h>
#define dim 1001
#define dim2 dim*(dim-1)/2
int n, x[dim], y[dim], ct=0;
long double p[dim2];
void q_sort(int l, int r) {
int i=l, j=r;
long double h, x=p[(i+j)/2];
do {
while (p[i]<x) ++i;
while (x<p[j]) --j;
if (i<=j) {
h=p[i], p[i]=p[j], p[j]=h;
++i, --j;
}
} while (i<=j);
if (i<r) q_sort(i, r);
if (l<j) q_sort(l, j);
}
int main() {
int i, j, sol=0, tmp=0, unu=0, doi=0;
freopen("trapez.in", "r", stdin);
freopen("trapez.out", "w", stdout);
scanf("%d\n", &n);
for (i=1; i<=n; ++i) scanf("%d %d\n", &x[i], &y[i]);
for (i=1; i<n; ++i)
for (j=i+1; j<=n; ++j)
if (x[j]==x[i]) unu++;
else if (y[j]==y[i]) doi++;
else {
++ct;
p[ct]=((long double)y[j]-y[i])/((long double)x[j]-x[i]);
}
q_sort(1, ct);
tmp=1;
for (i=2; i<=ct; ++i)
if (p[i-1]==p[i]) tmp++;
else {
sol+=tmp*(tmp-1)/2;
tmp=1;
}
sol+=unu*(unu-1)/2;
sol+=doi*(doi-1)/2;
printf("%d\n", sol);
return 0;
}