Cod sursa(job #711787)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 12 martie 2012 19:40:15
Problema Amlei Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.16 kb
#include<cstdio>
int a[25001],b[25001],n,t,u,i,j,l,c[51],e[501][51],d[501][51],r,x,y,k,o,h[501],z[501],s,v[105],p,w[1300];
int main()
{FILE *f=fopen("amlei.in","r"),*g=fopen("amlei.out","w");
while(!feof(f))
     {fscanf(f,"%d%d%d",&n,&t,&u);
     for(i=1;i<=n*t;i++)
           fscanf(f,"%d",&a[i]);
     for(i=1;i<=n*u;i++)
           fscanf(f,"%d",&b[i]);
     if(feof(f))
           break;
     for(l=0,i=1;i<=n*t;i+=n)
           {for(s=0,j=i;j<i+n;j++)
                   c[j-i+1]=a[j],s+=a[j];
           for(j=1;j<=n;j++)
                   v[n+c[j]]++;
           for(p=j=0;j<=2*n;j++)
                   {for(k=0;k<v[j];k++)
                         c[++p]=j-n;
                   v[j]=0;}
           for(y=k=1;k<=l&&y;k++)
           if(s==z[k])
                   {for(r=j=1;j<=n;j++)
                   if(d[k][j]!=c[j])
                          r=0;
                   if(r)
                          y=0;}
           if(y)
                   for(z[++l]=s,j=1;j<=n;j++)        
                          d[l][j]=c[j];}
     for(r=0,i=1;i<=n*u;i+=n)
           {for(s=0,j=i;j<i+n;j++)
                   c[j-i+1]=b[j],s+=b[j];
           for(j=1;j<=n;j++)
                   v[n+c[j]]++;
           for(p=j=0;j<=2*n;j++)
                   {for(k=0;k<v[j];k++)
                         c[++p]=j-n;
                   v[j]=0;}
           for(y=k=1;k<=r&&y;k++)
           if(s==h[k])
                   {for(o=j=1;j<=n;j++)
                   if(e[k][j]!=c[j])
                          o=0;
                   if(o)
                          y=0;}
           if(y)
                   for(h[++r]=s,j=1;j<=n;j++)
                          e[r][j]=c[j];}
     for(j=1;j<=l;j++)
           w[n*(n+1)/2+z[j]]++;
     for(p=j=0;j<=n*(n+1);j++)
           {for(k=0;k<w[j];k++)
                   z[++p]=j-n*(n+1)/2;
           w[j]=0;}
     for(j=1;j<=r;j++)
           w[n*(n+1)/2+h[j]]++;
     for(p=j=0;j<=n*(n+1);j++)
           {for(k=0;k<w[j];k++)
                   h[++p]=j-n*(n+1)/2;
           w[j]=0;}
     for(y=i=1;(i<=l||i<=r)&&y;i++)
     if(h[i]!=z[i])
           y=0;
     fprintf(g,"%s\n",y?"DA":"NU");}
return 0;}