Cod sursa(job #2502171)

Utilizator ililogIlinca ililog Data 30 noiembrie 2019 13:34:13
Problema Aria Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
using namespace std;
#include<iostream>
#include<fstream>
#include<math.h>
#include<iomanip>


int n;

struct point {
    int x, y;
} p[100001], punct;

double s;

double area (point a, point b, point c) {
    a.x -= c.x;
    a.y -= c.y;

    b.x -= c.x;
    b.y -= c.y;

    return fabs((double)(a.x*b.y-a.y*b.x)/2);
}

int main() {

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

    fin >> n;

    for (int i = 1; i<=n; i++) {
        fin >> p[i].x >> p[i].y;
        if (p[i].y < punct.y) {
            punct.y = p[i].y;
        }

        if (p[i].x < punct.x) {
            punct.x = p[i].x;
        }

    }

    punct.y -= 100;

    for (int i = 1; i<n; i++) {
        if (p[i].x < p[i+1].x) {
            s-=area(punct, p[i], p[i+1]);
        } else {
            s+=area(punct, p[i], p[i+1]);
        }
    }

    if (p[n].x < p[1].x) {
        s-=area(punct, p[n], p[1]);
    } else {
        s+=area(punct, p[n], p[1]);
    }

    fout << fixed << setprecision(5) << fabs(s);


    fin.close();
    fout.close();

    return 0;
}