Cod sursa(job #2021113)

Utilizator zanugMatyas Gergely zanug Data 12 septembrie 2017 18:14:58
Problema Aria Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("aria.in");
ofstream fout("aria.out");

const int N = 1e5 + 10;

struct point
{
    double x, y;
};

point x[N];
long double aria;

int orientation(point a, point b)
{
    double val = a.y * (b.x - a.x) - (b.y - a.y) * a.x;

    if(val > 0)
        return -1;
    if(val < 0)
        return 1;

    return 0;
}

int main()
{
    int n;
    fin >> n;

    for(int i = 0; i < n; ++i)
        fin >> x[i].x >> x[i].y;

    x[n] = x[0];

    for(int i = 0; i < n; ++i)
        aria += orientation(x[i], x[i+1]) * (x[i].x * x[i+1].y - x[i+1].x * x[i].y)/2;

    fout << aria;

    return 0;
}