Cod sursa(job #1081118)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 13 ianuarie 2014 10:27:00
Problema Aria Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include<fstream>
#include<cmath>
#define NMAX 100010

using namespace std;

ifstream f("aria.in");
ofstream g("aria.out");

struct punct
{
    double x, y;
}poligon[NMAX];

int n;

void Citeste()
{
    int i;

    f>>n;

    for (i=1; i<=n; ++i)
        f>>poligon[i].x>>poligon[i].y;

    poligon[n+1]=poligon[1];
}

double triunghi(punct A, punct B, punct C)
{
    double det=A.x*B.y+B.x*C.y+A.y*C.x-C.x*B.y-C.y*A.x-A.y*B.x;

    if (det<0.0) det=-det;

    return det/2.0;
}

double ariap()
{
    double s=0.0;
    int i;

    for (i=1; i<=n; ++i)
        s+=(poligon[i].y+poligon[i+1].y)*(poligon[i+1].x-poligon[i].x);

    if (s<0) s=-s;

    return s/2.0;
}

double arie()
{
    int i;
    double a=0.0;

    for (i=2; i<n; ++i)
        a+=triunghi(poligon[1], poligon[i], poligon[i+1]);

    return a;
}

int main()
{
    Citeste();

    g<<fixed<<arie()<<"\n";
    g<<fixed<<ariap()<<"\n";


    f.close();
    g.close();
    return 0;
}