Pagini recente » Cod sursa (job #1922998) | Cod sursa (job #2290793)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("trapez.in");
ofstream g("trapez.out");
struct coordonate_punct{
int x, y;
}p[1005];
double v[1010030];
void ms(int i, int m, int j)
{
int x,y,k;
double w[1010030];
x = i;
y = (m + 1);
k = 1;
while(x <= m && y <= j)
if(v[x] < v[y])
{
w[k++] = v[x++];
}
else
{
w [k++] = v[y++];
}
while(x <= m)
{
w[k++] = v[x++];
}
while(y <= j) {
w[k++] = v[y++];
}
}
void dei(int i,int j)
{
int m;
if(i<j)
{
m=(i+j)/2;
dei(i,m);
dei(m+1,j);
ms(i,m,j);
}
}
int main()
{
int n, k = 0;
f >> n;
for(int i = 1; i <= n; i++)
f >> p[i].x >> p[i].y;
for(int i = 1; i <= n; i++)
for(int j = i + 1; j <= n; j++) {
v[++k] = (double) ((p[j].x - p[i].x) / (p[j].y - p[i].y));
}
dei(1, k);
int rezultat = 0;
for( int i = 1; i <= k; i++)
{
int nr = 1;
while( i< k && v[i] == v[i+1])
{
i++;
nr++;
}
rezultat = rezultat + (nr * (nr-1)) / 2;
}
g << rezultat;
}