Cod sursa(job #652183)

Utilizator Bit_MasterAlexandru-Iancu Caragicu Bit_Master Data 23 decembrie 2011 12:02:54
Problema ChatNoir Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
/*
    Indiferent pe ce drum merge pisica cat timp nu ajunge la margine,
zidarul pune cate un zid in cele 4 colturi ale tablei.
    Astfel, cand pisica ajunge la margine, ea este zidita, si in orice
directie ar merge de-a lungul marginii, ea va fi zidita. Nu poate scapa
decat daca ajunge intr-un colt fara nici un zid. Daca toate colturile au
apucat sa fie zidite pana sa ajunga la margine, atunci nu mai poate scapa.
Altfel va merge pe conturul tablei pana cand va intalni coltul nezidit cu
nici un zid, cand va avea 2 directii de iesire care nu pot fi zidite ambele
simultan.
*/

#include <cstdio>

inline int min(int a, int b)
{
    return (a<b)?a:b;
}

inline int min(int a, int b, int c, int d)
{
    return min(min(a,b),min(c,d));
}

inline bool posibil(int n, int m, int x, int y) //posibil de zidit
{
    return min(x-1,n-x,y-1,m-y)>4; //min dist - 1 >= 4; //-1 pisica pleaca prima
}

int main()
{
    int t,n,m,x,y;
    freopen("chatnoir.in","r",stdin);
    freopen("chatnoir.out","w",stdout);
    scanf("%d",&t);
    for (int i = 1; i <= t; ++i)
    {
        scanf("%d%d%d%d",&n,&m,&x,&y);
        printf(posibil(n,m,x,y)?"NU\n":"DA\n");
    }
    return 0;
}