Cod sursa(job #2221743)

Utilizator inquisitorAnders inquisitor Data 15 iulie 2018 17:48:56
Problema Aria Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <cstdio>

double get_double()
{
    char c = getchar(), sign = '+';

    long long integerPart = 0;

    for(; c < 48 || c > 57; c = getchar()) sign = c;

    for(; c > 47 && c < 58; c = getchar()) integerPart = integerPart * 10 + c - '0';

    if(c == '.')
    {
        double fractionalPart = 0, power = 1;

        for(; (c = getchar()) > 47 && c < 58; power *= 10)

            fractionalPart = fractionalPart * 10 + c - '0';


        double result = integerPart + fractionalPart / power;

        return (sign == '-') ? -result : result;
    }

    return (sign == '-') ? -integerPart : integerPart;
}

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

    int N; double x[100002], y[100002], area = 0;

    N = get_double();

    for(int i = 1; i <= N; ++i)
    {
        x[i] = get_double();

        y[i] = get_double();
    }

    x[N + 1] = x[1];

    y[N + 1] = y[1];

    for(int i = 1; i <= N; i++)
    {
        area += x[i] * y[i + 1] - y[i] * x[i + 1];
    }

    printf("%.5lf", area / 2);

    return 0;
}