Cod sursa(job #3257463)

Utilizator MikeStrikeAgache Mihai MikeStrike Data 17 noiembrie 2024 19:32:18
Problema Aria Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <vector>
using namespace std;

double computeArea(const vector<pair<int, int>> &points) {
    int n = points.size();
    long long sum1 = 0, sum2 = 0;


    for (int i = 0; i < n; ++i) {
        int x1 = points[i].first;
        int y1 = points[i].second;
        int x2 = points[(i + 1) % n].first;
        int y2 = points[(i + 1) % n].second;

        sum1 += 1LL * x1 * y2;
        sum2 += 1LL * y1 * x2;
    }

    return abs(sum1 - sum2) / 2.0;
}

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

    int n;
    fin >> n;

    vector<pair<int, int>> points(n);
    for (int i = 0; i < n; ++i) {
        in >> points[i].first >> points[i].second;
    }

 
    double area = computeArea(points);


    if (fabs(area - round(area)) < 1e-9) { 
        fout << static_cast<long long>(area) << "\n";
    } else {
        fout.precision(10);
        fout << fixed << area << "\n";
    }

    return 0;
}