Cod sursa(job #1547419)

Utilizator bciobanuBogdan Ciobanu bciobanu Data 9 decembrie 2015 16:10:33
Problema Aria Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdio.h>

#define MAX_N 100000
#define ABS(X) ((X) < 0 ? -(X) : (X))

typedef struct {
  int x, y;
} Point;

Point v[MAX_N];

// | A.x A.y 1 |
// | B.x B.y 1 |
// | C.x C.y 1 |
__inline__ long long 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;
  long long area;

  fin = fopen( "aria.in", "r" );
  fscanf( fin, "%d", &N );
  for ( i = 0; i < N; i++ ) {
    fscanf( fin, "%d%d", &v[i].x, &v[i].y );
  }
  fclose( fin );

  area = 0LL;
  for ( i = 2; i < N; i++ ) {
    area += determinant( v[0], v[i-1], v[i] );
  }

  fout = fopen( "aria.out", "w" );
  fprintf( fout, "%.5f\n", 0.5 * abs( area ) );
  fclose( fout );
  return 0;
}