Cod sursa(job #291966)

Utilizator taloibogdanTaloi Bogdan Cristian taloibogdan Data 30 martie 2009 17:05:06
Problema Invers Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include<stdio.h>
#include<string.h>
long t,tt,n,a[100005],i,da;
char sir[100005];
long proc(long a[],long st,long dr)
{long i;
 while(st<dr)
  {if(a[st]==19&&a[dr]==9)return 0;
   if(a[st]-a[dr]!=0&&a[st]-a[dr]!=1&&a[st]-a[dr]!=10&&a[st]-a[dr]!=11)return 0;
   if(a[st]==a[dr]+1)a[st+1]+=10;
   if(a[st]==a[dr]+10)
     {i=dr;
      while(a[--i]==0)a[i]=9;
      --a[i];}
   if(a[st]-a[dr]==11)
     {a[st+1]+=10;
      i=dr;
      while(a[--i]==0)a[i]=9;
      --a[i];}
   st++;dr--;}
 if(st==dr)if(a[st]%2)return 0;
 if(st==dr+1)if(a[st]-a[dr]!=0&&a[st]-a[dr]!=11)return 0;
 return 1;
}
int main()
{
 freopen("invers.in","r",stdin);
 freopen("invers.out","w",stdout);
 scanf("%ld",&t);
 for(tt=1;tt<=t;++tt)
    {scanf("\n");
     gets(sir);
     n=strlen(sir);
     for(i=1;i<=n;++i)a[i]=sir[i-1]-'0';
     if(a[1]==1)if(a[n]!=1||(a[2]-a[n-1]!=0&&a[2]-a[n-1]!=1&&a[2]-a[n-1]!=10&&a[2]-a[n-1]!=11))a[2]+=10,da=proc(a,2,n);
     else da=proc(a,1,n);
     else da=proc(a,1,n);
     if(da)printf("DA\n");
      else printf("NU\n");}
 return 0;
}