Cod sursa(job #1687767)

Utilizator calin1Serban Calin calin1 Data 13 aprilie 2016 07:57:46
Problema Aria Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.58 kb
#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;

int n;

struct coord
{
    long double x,y;

} coordonate[100000];

void citire()
{
    scanf("%d\n",&n);
    for(int i=0; i<n; i++)
    {
        scanf("%Lf %Lf\n",&coordonate[i].x,&coordonate[i].y);

        coordonate[i].x += 1000000;
        coordonate[i].y += 1000000;
    }

    coordonate[n].x = coordonate[0].x;
    coordonate[n].y = coordonate[0].y;
}

void afisare(long double x)
{
    if(x==(int)x)
    {
        printf("%.0Lf",x);
        return;
    }
    if((x*10)==(int)(x*10))
    {
        x*=10;
        x=(long long)x;
        x/=10;
        printf("%.1Lf",x);
        return;
    }
    if((x*100)==(int)(x*100))
    {
        x*=100;
        x=(long long)x;
        x/=100;
        printf("%.2Lf",x);
        return;
    }
    if((x*1000)==(int)(x*1000))
    {
        x*=1000;
        x=(long long)x;
        x/=1000;
        printf("%.3Lf",x);
        return;
    }
    if((x*10000)==(int)(x*10000))
    {
        x*=10000;
        x=(long long)x;
        x/=10000;
        printf("%.4Lf",x);
        return;
    }
    if((x*100000)==(int)(x*100000))
    {
        x*=100000;
        x=(long long)x;
        x/=100000;
        printf("%.5Lf",x);
        return;
    }
}

void prelucrare()
{
    long double arie=0;
    for(int i=0; i<n; i++)
    {
        arie+=((coordonate[i].y+coordonate[i+1].y)*(coordonate[i+1].x-coordonate[i].x));
    }

    arie=abs(arie/2);

    afisare(arie);
}

int main()
{
    freopen("aria.in","r",stdin);
    freopen("aria.out","w",stdout);

    citire();
    prelucrare();

    return 0;
}