Cod sursa(job #1687770)

Utilizator calin1Serban Calin calin1 Data 13 aprilie 2016 08:01:43
Problema Aria Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 2.66 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 /= 2;

    if(arie < 0)
    {
        arie = -arie;
    }

    //printf("%.0Lf",arie);

    //afisare(arie);

    if(arie == (int)arie)
    {
        printf("%.0Lf", arie);
    }
    else if((arie * 10) == (int)(arie * 10))
    {
        arie = arie * 10;
        arie = (long long)arie;
        arie = arie / 10;

        printf("%.1Lf", arie);
    }
    else if((arie * 100) == (int)(arie * 100))
    {
        arie = arie * 100;
        arie = (long long)arie;
        arie = arie / 100;

        printf("%.2Lf", arie);
    }
    else if((arie * 1000) == (int)(arie * 1000))
    {
        arie = arie * 1000;
        arie = (long long)arie;
        arie = arie / 1000;

        printf("%.3Lf", arie);
    }
    else if((arie * 10000) == (int)(arie * 10000))
    {
        arie = arie * 10000;
        arie = (long long)arie;
        arie = arie / 10000;

        printf("%.4Lf", arie);
    }
    else
    {
        arie = arie * 100000;
        arie = (long long)arie;
        arie = arie / 100000;

        printf("%.5Lf", arie);
    }
}

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

    citire();
    prelucrare();

    return 0;
}