Cod sursa(job #2983901)

Utilizator tryharderulbrebenel mihnea stefan tryharderul Data 23 februarie 2023 11:48:04
Problema Aria Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <algorithm>
#include <cstdio>
#include <utility>
#include <vector>
#define double long double

using namespace std;

double compute_area_with_0(pair<double, double> p1, pair<double, double> p2) {
    return p1.first * p2.second - p2.first * p1.second;
}

double compute_area(pair<double, double> p1, pair<double, double> p2, pair<double, double> p3) {
    return 0.5 * abs(p1.first * p2.second + p2.first * p3.second +
                     p3.first * p1.second - p1.first * p3.second -
                     p2.first * p1.second - p3.first * p2.second);
}

int main() {
    freopen("aria.in", "r", stdin);
    freopen("aria.out", "w", stdout);

    int n;
    double area = 0;
    vector<pair<double, double>> points;

    scanf("%d", &n);
    points.resize(n + 1);

    for (int i = 0; i < n; i++) { scanf("%Lf %Lf", &points[i].first, &points[i].second); }
    points[n] = points[0];

    for (int i = 0; i < n; i++) { area += compute_area_with_0(points[i], points[i + 1]); }

    printf("%.5Lf", 1.0 * abs(area) * 0.5);

    return 0;
}