Cod sursa(job #2887211)

Utilizator _andrei4567Stan Andrei _andrei4567 Data 8 aprilie 2022 23:52:08
Problema Algoritmul lui Euclid extins Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#define int long long

///pick ( arie cu determinant)
using namespace std;

ifstream cin("copaci.in");
ofstream cout("copaci.out");

const int N = 2e6 + 1;

struct da
{
    int x, y;
} a[N];

int cmmmdc(int a, int b)
{
    if(!b)
        return a;
    else
        return cmmmdc(b, a % b);

}
int ab(int x)
{
    if(x > 0)
        return x;
    return -x;

}
signed main()
{

    int n;
    cin >> n;
    for (int i = 1; i <= n; ++i)
    {
        cin >> a[i].x >> a[i].y;

    }
    a[n + 1] = a[1];
    int p = 0;
    int arie = 0;
    for (int i = 1; i <= n; ++i)
    {
        p += cmmmdc(ab(a[i + 1].x - a[i].x), ab(a[i + 1].y - a[i].y));
        arie += (a[i].x*a[i+1].y-a[i+1].x*a[i].y);
    }
    arie /= 2;
    cout << arie + 1 - (p / 2) << '\n';
    return 0;
}