Pagini recente » Cod sursa (job #34124) | Cod sursa (job #2033241) | Cod sursa (job #482110) | Cod sursa (job #2865552) | Cod sursa (job #1012039)
#include <cstdio>
#include <cassert>
#include <algorithm>
using namespace std;
struct point {
int x, y;
};
#define MAX_N 1000
#define EPS 0.0000000001
point v[MAX_N];
double a[MAX_N * MAX_N];
void read( FILE *fin, int &n ) {
assert( fscanf( fin, "%d", &n ) == 1 );
for ( int i = 0; i < n; ++i )
assert( fscanf( fin, "%d%d", &v[i].x, &v[i].y ) == 2 );
}
double slope( point a1, point a2 ) {
return ( double ) ( a2.y - a1.y ) / ( a2.x - a1. x );
}
int main() {
FILE *fin, *fout;
int n;
fin = fopen( "trapez.in", "r" );
read( fin, n );
fclose( fin );
int nr = 0;
for ( int i = 0; i < n - 1; ++i )
for ( int j = i + 1; j < n; ++j ) {
a[nr] = slope( v[i], v[j] );
++nr;
}
sort( a, a + nr );
int len = 1, ans = 0;
for ( int i = 0; i < nr - 1; ++i )
if ( a[i + 1] - a[i] < EPS )
++len;
else {
ans += len * ( len - 1 ) / 2;
len = 1;
}
fout = fopen( "trapez.out", "w" );
fprintf( fout, "%d\n", ans );
fclose( fout );
}