Cod sursa(job #2136808)

Utilizator circeanubogdanCirceanu Bogdan circeanubogdan Data 20 februarie 2018 11:24:07
Problema Aria Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>
#include <iomanip>
#define DIM 100002
#define INF 1e9 + 1
#define pr pair<long double, long double>
#define x first
#define y second

using namespace std;

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

int n;

long double A;

pr p[DIM], pctar;

long double det(pr a, pr b, pr c){
    return (long double)(a.x * (b.y - c.y) + b.x * (c.y - a.y) + c.x * (a.y - b.y)) / (long double)2.0;
}

int main(int argc, const char * argv[]) {
    in>>n;
    for(int i = 1; i <= n; ++ i)
        in>>p[i].x>>p[i].y;
    pctar = make_pair(0, 0);
    p[n + 1] = p[1];
    p[n + 2] = p[2];
    for(int i = 1; i <= n; ++ i){
        if(det(p[i], p[i + 1], p[i + 2]) == 0){
            A += det(p[i], p[i + 2], pctar);
            ++ i;
        }
        else
            A += det(p[i], p[i + 1], pctar);
    }
    out<<setprecision(7)<<fixed<<(long double)(A);
    return 0;
}