Pagini recente » Cod sursa (job #1311332) | Cod sursa (job #2034506) | Cod sursa (job #2842710) | Cod sursa (job #2672523) | Cod sursa (job #1803108)
#include <stdio.h>
#define MAXP 500010
#define MAXN 1002
double panta[MAXP];
int pozitie(int i, int j){
int mod = 1;
double aux;
while(i < j){
if(panta[i] > panta[j]){
aux = panta[i];
panta[i] = panta[j];
panta[j] = aux;
mod = 1 - mod;
}
i = i + mod;
j = j + mod - 1;
}
return i;
}
void divide(int i, int j){
int k;
if(i < j){
k = pozitie(i,j);
divide(i,k - 1);
divide(k + 1,j);
}
}
int main()
{
int n, i, j, count, rezultat;
int x[MAXN], y[MAXN];
FILE *f, *g;
f=fopen("trapez.in","r");
g=fopen("trapez.out","w+");
fscanf(f,"%d",&n);
for(i = 1;i <= n; ++i)
fscanf(f,"%d %d",&x[i],&y[i]);
count = 0;
for(i = 1;i < n; ++i)
for(j = i + 1;j <= n; ++j){
count++;
if(x[i] == x[j])
panta[count] = 2000000000;
else
panta[count] = ((double)(y[j] - y[i]) / (double)(x[j] - x[i]));
}
divide(1,count);
i = 1;
rezultat = 0;
while(i <= count){
j = 1;
while(panta[i] == panta[i + 1]){
++i;
++j;
}
rezultat = rezultat + (j * (j - 1)) / 2;
++i;
}
fprintf(g,"%d",rezultat);
return 0;
}