Cod sursa(job #1871140)

Utilizator DanyBvGeorge-Daniel Gagiu DanyBv Data 7 februarie 2017 10:41:38
Problema Aria Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <cstdio>
#include <vector>

using namespace std;

const pair<double, double> O = make_pair(0, 0);
vector<pair<double, double> > V;
int n;
double x, y;
double aria;

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

void read()
{
    freopen("aria.in", "r", stdin);
    scanf("%d", &n);
    for(int i = 0; i < n; i++)
    {
        scanf("%lf %lf", &x, &y);
        V.push_back(make_pair(x, y));
    }
}

void solve()
{
    for(int i = 0; i < n - 1; i++)
        aria += getArea(O, V[i], V[i + 1]);
    aria += getArea(O, V[n - 1], V[0]);
}

void print()
{
    freopen("aria.out", "w", stdout);
    printf("%.5lf", aria);
}

int main()
{
    read();
    solve();
    print();
    return 0;
}