Cod sursa(job #2366360)

Utilizator bodea.georgianaBodea Georgiana bodea.georgiana Data 4 martie 2019 19:45:33
Problema Aria Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <cstdio>
#define N 100005

using namespace std;
FILE *f,*g;

struct bla
{
    double x,y;
}p[N];

double det(bla a, bla b)
{
    double x1=a.x, x2=b.x, y1=a.y, y2=b.y;
    return (x1*y2-x2*y1);
}
int main()
{
    f=fopen("aria.in","r");
    g=fopen("aria.out","w");
    int n;
    fscanf(f,"%d",&n);
    for(int i=1;i<=n;++i)
        fscanf(f,"%lf %lf",&p[i].x,&p[i].y);
///ATENTIE, punctele sunt datae in ordine trigonometrica
    p[n+1]={p[1].x,p[1].y};
    double arie=0;
///nu folosim modul pt ca ariile negative vor "anula" zonele
///corespunzătoare ariilor pozitive care se află în afara poligonului
    for(int i=1;i<=n;++i)
        arie+=det(p[i],p[i+1]);
    if(arie<=0)
        arie*=(-1);
    fprintf(g,"%0.7lf",arie/2);
    fclose(f);
    fclose(g);
    return 0;
}