Cod sursa(job #1134542)

Utilizator kiralalaChitoraga Dumitru kiralala Data 6 martie 2014 18:42:04
Problema Aria Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
#include <utility>
#include <algorithm>
#define NMAX 100005
#define x first
#define y second
#define mp make_pair

using namespace std;

typedef pair<double,double> Point;
FILE* f=freopen("aria.in","r",stdin);
FILE* o=freopen("aria.out","w",stdout);

int n;
Point pts[NMAX];
int crossproduct(Point a, Point b, Point c)
{
    return (b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x);
}
bool comp(Point a, Point b)
{
    return crossproduct(pts[0],a,b)<0;
}
double mod(double x)
{
    return (x>=0)?x:-x;
}
double TrySurf(Point a, Point b, Point c)
{
    return mod((a.x*b.y+b.x*c.y+c.x*a.y-c.x*b.y-a.x*c.y-b.x*a.y))/2.0;
}
double Surface()
{
    double s=0;
    for(int i=2;i<n;++i)
    {
        s+=TrySurf(pts[0],pts[i-1],pts[i]);
    }
    return s;
}

int main()
{
    scanf("%d",&n);
    for(int i=0;i<n;++i)
    {
        scanf("%lf%lf",&pts[i].x,&pts[i].y);
    }

    printf("%.7lf",Surface());

    return 0;
}