Cod sursa(job #1892653)

Utilizator dumitrualexAlex Dumitru dumitrualex Data 25 februarie 2017 10:41:35
Problema Aria Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <iomanip>

using namespace std;

template <class T>
class punct
{
public:
    T x, y;

    punct(T x = 0, T y = 0): x(x), y(y)
    {

    }

    punct operator+(punct p)
    {
        return punct(x + p.x, y + p,y);
    }

    static T arie_triunghi(punct a, punct b, punct c)
    {
        return 0.5 * (a.x * b.y + b.x * c.y + c.x * a.y - c.x * b.y - a.x * c.y - b.x * a.y);
    }

    static T arie_origine(punct a, punct b)
    {
        return 0.5 * (a.x * b.y - b.x * a.y);
    }
};



vector<punct<double> > v;
int N;

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

int main()
{
    ios::sync_with_stdio(0);

    fin >> N;
    punct<double> p;

    for (int i = 0; i < N; i++)
    {
        fin >> p.x >> p.y;

        v.push_back(p);
    }

    double arie = 0;
    for (int i = 0; i < N; i++)
    {
        arie += punct<double>::arie_origine(v[i], v[(i+1)%N]);
    }

    if (arie < 0)
        arie = -arie;

    fout << fixed << setprecision(6) << arie;
    return 0;
}