Cod sursa(job #1412806)

Utilizator AlexandruValeanuAlexandru Valeanu AlexandruValeanu Data 1 aprilie 2015 16:03:09
Problema Aria Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <bits/stdc++.h>

using namespace std;

#define Point pair<double,double>
#define x first
#define y second

/// assumes that polygon is given in clockwise/counter-clockwise order
double signedArea(vector<Point>& points)
{
    double area = 0;
    int N = points.size();

    for (int i = 0; i < N; ++i)
        area += (points[i].x * points[(i + 1) % N].y - points[(i + 1) % N].x * points[i].y);

    return area / 2.0;
}

int main()
{
    ifstream in("aria.in");
    ofstream out("aria.out");

    int N;
    in >> N;
    vector<Point> points(N);

    for ( int i = 0; i < N; ++i )
        in >> points[i].x >> points[i].y;

    out << fixed << setprecision(10);
    out << abs(signedArea(points));

    return 0;
}