Cod sursa(job #928543)

Utilizator supermitelArdelean Razvan Mitel supermitel Data 26 martie 2013 15:04:16
Problema Aria Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <cstdio>
#include <algorithm>
#include <cmath>

using namespace std;

struct punct{int x,y;};

double Lsegment(punct A, punct B)
{
    return sqrt(1.*abs(A.x-B.x)*abs(A.x-B.x)+abs(A.y-B.y)*abs(A.y-B.y));
}

double Trarie(punct A, punct B, punct C)
{
    double a,b,c,p;
    a=Lsegment(B,C);
    b=Lsegment(A,C);
    c=Lsegment(A,B);
    p=(a+b+c)/2;
    return sqrt(p*(p-a)*(p-b)*(p-c));
}

punct poly[100010];
int n;
double arie;

int main()
{
    freopen("aria.in","r",stdin);
    freopen("aria.out","w",stdout);
    scanf("%d",&n);
    int i;
    for(i=0;i<n;i++)
        scanf("%d%d",&poly[i].x,&poly[i].y);
    for(i=0;i+2<n;i++)
        arie+=Trarie(poly[i],poly[i+1],poly[i+2]);
    printf("%.10llf\n",arie);

    return 0;
}