Cod sursa(job #2900534)

Utilizator andreipirjol5Andrei Pirjol andreipirjol5 Data 11 mai 2022 09:11:18
Problema Aria Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <cstdio>
#include <cmath>

using namespace std;
FILE *fin, *fout;

struct point
{
    double x, y;
};

struct triunghi
{
    point p1, p2, p3;
};

long double dist(point p1, point p2)
{
    return sqrt((p2.x - p1.x) * (p2.x - p1.x) + (p2.y - p1.y) * (p2.y - p1.y));
}

long double aria_tr(triunghi t)
{
    double a = dist(t.p1, t.p2), b = dist(t.p1, t.p3), c = dist(t.p2, t.p3);

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

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

#define NMAX 1000000
point p[NMAX + 5];

int main()
{
    fin = fopen("aria.in", "r");
    fout = fopen("aria.out", "w");

    int n;
    fscanf(fin, "%d", &n);
    int i;
    for(i = 1; i <= n; i++)
        fscanf(fin, "%lf %lf", &p[i].x, &p[i].y);

    triunghi t;
    t.p1 = p[1];

    long double sum = 0;
    for(i = 2; i < n; i++)
    {
        t.p2 = p[i];
        t.p3 = p[i + 1];

        sum += aria_tr(t);

        //fprintf(fout , "1 %d %d %lf\n" , i , i + 1 , aria_tr(t));
    }

    fprintf(fout, "%.5Lf", sum);
    //.3%d-
    fclose(fin);
    fclose(fout);
    return 0;
}