Cod sursa(job #3250195)

Utilizator BucsMateMate Bucs BucsMate Data 19 octombrie 2024 16:39:37
Problema Aria Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.16 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <tgmath.h>
#include <iomanip>
#include <limits>

using namespace std;

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

struct Pos
{
    long double x;
    long double y;
};

long double calc_Dist(Pos point1, Pos point2)
{
    return sqrt((point1.x - point2.x)*(point1.x - point2.x) + (point1.y - point2.y)*(point1.y - point2.y));
}

long double calc_Area(Pos point1, Pos point2, Pos point3)
{
    long double a = calc_Dist(point1, point2);
    long double b = calc_Dist(point2, point3);
    long double c = calc_Dist(point1, point3);

    long double p = (a+b+c)/2;

    return sqrt(p*(p-a)*(p-b)*(p-c));
}

int main()
{
    int N;
    input >> N;
    vector<Pos> points(N);
    for(int i = 0; i < N; i++){
        input >> points[i].x;
        input >> points[i].y;
    }

    long double area = calc_Area(points[0], points[1], points[2]);

    for(int i = 3; i < N; i++){
        long double new_area = calc_Area(points[0], points[i-1], points[i]);
        area += new_area;
    }
    output << fixed << setprecision(6) << area << endl;
    return 0;
}