Cod sursa(job #1547420)

Utilizator bciobanuBogdan Ciobanu bciobanu Data 9 decembrie 2015 16:11:50
Problema Aria Scor 70
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 {
  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, "%.5f\n", 0.5 * ABS( area ) );
  fclose( fout );
  return 0;
}