Cod sursa(job #2900538)

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

using namespace std;
FILE *fin;

struct point
{
    double x, y;
};

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

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

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

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

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

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

ofstream fout ("aria.out");
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));
    }

    fout << fixed << setprecision(5) << sum;
    //.3%d-
    fclose(fin);
    fout.close();
    return 0;
}