Cod sursa(job #906787)

Utilizator iuli1505Parasca Iuliana iuli1505 Data 7 martie 2013 10:08:02
Problema Aria Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include<cstdio>
#include<utility>
#define nmax 100010
#define mp make_pair
using namespace std;
int n,x,y,x0,y0,i,cmmdc(int,int);
long long nr,NR;
pair<int,int>v[nmax];
int main()
{
    freopen("copaci.in","r",stdin);
    freopen("copaci.out","w",stdout);
    scanf("%d", &n);
    scanf("%d%d", &x0,&y0);
    v[1]=mp(x0,y0);
    for(i=2;i<=n;++i)
    {
        scanf("%d%d", &x, &y);
        nr+=(long long)cmmdc(x-x0,y-y0);
        x0=x;y0=y;
        v[i]=mp(x,y);
    }
    nr+=(long long)cmmdc(x0-v[1].first,y0-v[1].second);
    v[n+1]=v[1];
    for(i=1;i<=n;++i)
        NR+=(long long)(v[i].first*v[i+1].second-v[i+1].first*v[i].second);
    if(NR<0)NR=-NR;
    NR-=nr;
    NR+=2;
    NR/=2;
    printf("%lld\n", NR);

    return 0;
}
int cmmdc(int a, int b)
{
    int aux;
    if(a<0)a=-a;
    if(b<0)b=-b;
    while(b!=0)
    {
        aux=a;
        a=b;
        b=aux%a;
    }
    return a;
}