Cod sursa(job #1547432)

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

#define MAX_N 100000

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 long 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;
  long 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, "%Lf\n", fabs( area ) * 0.5 );
  fclose( fout );
  return 0;
}