Cod sursa(job #1412477)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 1 aprilie 2015 12:16:27
Problema Ciclu hamiltonian de cost minim Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.37 kb
#include <cstdio>
int t;
int n;
struct str
{
       int x;
       int y;
}a[200001];
int abs(int a)
{
    if(a<0) return -a;
    return a;
}
int cmmdc(int a,int b)
{
    if(a%b==0) return b;
    if(b%a==0) return a;
    return cmmdc(a%b,b%a);
}
int main()
{
    freopen ("perfect2.in","r",stdin);
    freopen ("perfect2.out","w",stdout);
    scanf("%d%d",&t,&n);
    if(t==1)
    {
            int maxx=0,maxy=0,minx=4500,miny=4500;
            for(int i=1;i<=n;i++)
            {
                    scanf("%d%d",&a[i].x,&a[i].y);
                    if(maxx<a[i].x) maxx=a[i].x;
                    if(minx>a[i].x) minx=a[i].x;
                    if(maxy<a[i].y) maxy=a[i].y;
                    if(miny>a[i].y) miny=a[i].y;
            }
            printf("%d %d %d %d\n",minx,miny,maxx,maxy);
    }
    else
    {
        for(int i=1;i<=n;i++) scanf("%d%d",&a[i].x,&a[i].y);
        int p1,p2;
        int ct=0;
        for(int i=2;i<=n;i++)
        {
                p1=abs(a[1].x-a[i].x);
                p2=abs(a[1].y-a[i].y);
                if((p1!=0&&p2!=0&&cmmdc(p1,p2)==1)) ct++;
                else if(p1==0)
                {
                     if(p2==1) ct++;
                }
                else if(p2==0)
                {
                     if(p1==1) ct++;
                }
        }
        printf("%d\n",ct);
    }
}