Cod sursa(job #3288696)

Utilizator hiken056Stefan Rusu hiken056 Data 23 martie 2025 17:36:35
Problema Aria Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
//aria poligonului o putem afla prin triangularizarea acestuia
// iar apoi facem suma ariilor
// luam arbitrat punctul P(0, 0) cu care formam triunghiuri (P Ai Ai+1) (consideram si ca A1 = An+1)
// aria unui triunghi o sa fie 1/2(xi*yi+1 - yi*xi+1 )


    //mai usor asa fara sa retin un vector de puncte
    //ultimul triunghi cu PAnA1
    //first ii An
    // fixed << setprecision(6) = precizie de pana la 10^-5
    // fabs = valoarea in modul

#include <bits/stdc++.h>

using namespace std;

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

int N;
#define double long double

struct Point{
    double x, y;
};

double ariaTriunghi( Point A, Point B) {
    return fabs(( A.x * B.y - A.y * B.x));
}

double aria = 0;

int main() {
    fin >> N;
    Point first, ext;
    fin >> ext.x >> ext.y;
    first = ext;
    for ( int i = 0; i < N; ++ i ) {
        Point second;
        fin >> second.x >> second.y;
        aria += ariaTriunghi(ext, second);
        ext = second;
    }
    aria += ariaTriunghi(first, ext);
    aria /= 2.0;
    fout << fixed << setprecision(6) << fabs(aria);
}