Pagini recente » Borderou de evaluare (job #1208660) | Borderou de evaluare (job #297218) | Borderou de evaluare (job #1708577) | Borderou de evaluare (job #2214306) | Cod sursa (job #1547422)
#include <stdio.h>
#define MAX_N 100000
#define ABS(X) ((X) < 0 ? -(X) : (X))
typedef struct {
double x, y;
} Point;
Point v[MAX_N];
// | A.x A.y 1 |
// | B.x B.y 1 |
// | C.x C.y 1 |
__inline__ double determinant( Point A, Point B, Point C ) {
return A.x * B.y + B.x * C.y + C.x * A.y
-C.x * B.y - A.x * C.y - A.y * B.x;
}
int main( void ) {
FILE *fin, *fout;
int N, i;
double area;
fin = fopen( "aria.in", "r" );
fscanf( fin, "%d", &N );
for ( i = 0; i < N; i++ ) {
fscanf( fin, "%lf%lf", &v[i].x, &v[i].y );
}
fclose( fin );
area = 0.00;
for ( i = 2; i < N; i++ ) {
area += determinant( v[0], v[i-1], v[i] );
}
fout = fopen( "aria.out", "w" );
fprintf( fout, "%.6f\n", 0.5 * ABS( area ) );
fclose( fout );
return 0;
}