Cod sursa(job #969701)

Utilizator gabrielinelusGabriel-Robert Inelus gabrielinelus Data 5 iulie 2013 02:22:30
Problema Aria Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
/**
 1 p1.x p1.y
 1 p2.x p2.y
 1 p3.x p3.y

 return p2.x*p3.y+p3.x*p1.y+p1.x*p2.y-p2.x*p1.y-p3.x*p2.y-p3.y*p1.x;
*/
#include <cstdio>
#include <algorithm>
#define pdd pair<long double,long double>
#define x first
#define y second
#define mp make_pair
FILE *f=fopen("aria.in","r");
FILE *g=fopen("aria.out","w");
using namespace std;
long double arie(pdd vf1,pdd vf2,pdd vf3)
{
    return vf1.x*vf2.y+vf2.x*vf3.y+vf3.x*vf1.y-vf1.y*vf2.x-vf2.y*vf3.x-vf3.y*vf1.x;
}
int n;
int main()
{
    pdd vf1,vf2,vf3;
    long double p1,p2,AR=0;
    fscanf(f,"%d",&n);
    fscanf(f,"%Lf%Lf",&p1,&p2);
    vf1=mp(p1,p2);
    fscanf(f,"%Lf%Lf",&p1,&p2);
    vf2=mp(p1,p2);
    for(int i=3;i<=n;++i)
        {
            fscanf(f,"%Lf%Lf",&p1,&p2);
            vf3=mp(p1,p2);
            AR+=arie(vf1,vf2,vf3)/2.0;
            vf2=vf3;
        }
    if(AR<0)AR*=-1;
    fprintf(g,"%Lf",AR);
    return 0;
}