Cod sursa(job #1390561)

Utilizator proflaurianPanaete Adrian proflaurian Data 17 martie 2015 09:36:01
Problema Aria Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>
#include <cmath>
#include <iomanip>
using namespace std;
ifstream fin("aria.in");
ofstream fout("aria.out");
struct punct
{
    long double X,Y;
    punct()
    {
        X=Y=0.0;
    }
    punct(long double x,long double y)
    {
        X=x;Y=y;
    }
};
struct trapez
{
    punct A,B;
    trapez()
    {
        A=punct(0.0,0.0);
        B=punct(0.0,0.0);
    }
    trapez(punct a,punct b)
    {
        A=a;B=b;
    }
    trapez(long double x1,long double y1,long double x2,long double y2)
    {
        A=punct(x1,y1);
        B=punct(x2,y2);
    }
    long double aria()
    {
        return (A.X-B.X)*(A.Y+B.Y)/2;
    };
};
int n;
long double xd,yd,xs,ys,xi,yi,sol;
int main()
{
    fin>>n;
    fin>>xi>>yi;
    xs=xi;ys=yi;
    for(int i=2;i<=n;i++)
    {
        fin>>xd>>yd;
        sol+=trapez(xs,ys,xd,yd).aria();
        xs=xd;ys=yd;
    }
    xd=xi;yd=yi;
    sol+=trapez(xs,ys,xd,yd).aria();
    if(sol<=-0.00000001)sol=-sol;
    fout<<fixed<<setprecision(10)<<sol;

    return 0;
}