Cod sursa(job #711692)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 12 martie 2012 17:35:34
Problema Amlei Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.51 kb
#include<cstdio>
#include<algorithm>
#define N 25001
using namespace std;
int a[N],b[N],n,t,u,i,m,j,l,c[51],e[501][51],d[501][51],r,x,y,k,h[501],w[501],d1[501][51],e1[501][51],i1,j1;
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(j=i;j<i+n;j++)
                   c[j-i+1]=a[j];
           sort(c+1,c+n+1),l++;
           for(j=1;j<=n;j++)
                   d[l][j]=c[j];}
     for(r=0,i=1;i<=n*u;i+=n)
           {for(j=i;j<i+n;j++)
                   c[j-i+1]=b[j];
           sort(c+1,c+n+1),r++;
           for(j=1;j<=n;j++)
                   e[r][j]=c[j];}
     for(i=1;i<t;i++)
     for(j=i+1;j<=t;j++)
     for(l=1;l<=n;l++)
     if(d[i][l]>d[j][l])
           for(r=1;r<=n;r++)
                  x=d[i][r],d[i][r]=d[j][r],d[j][r]=x;
     for(i=1;i<=t;i++)
     if(!h[i])
           {for(j=i+1;j<=t;j++)
                  {for(r=0,l=1;l<=n;l++)
                  if(d[i][l]==d[j][l])
                          r++;
                  if(r==n)
                          h[j]=1;
                  else
                          break;}}
     for(i1=0,i=1;i<=t;i++)
           {if(!h[i])
                  {i1++;
                  for(j=1;j<=n;j++)
                        d1[i1][j]=d[i][j];}
           h[i]=0;}                    
     for(i=1;i<u;i++)
     for(j=i+1;j<=u;j++)
     for(l=1;l<=n;l++)
     if(e[i][l]>e[j][l])
           for(r=1;r<=n;r++)
                  x=e[i][r],e[i][r]=e[j][r],e[j][r]=x;
     for(i=1;i<=u;i++)
     if(!h[i])
           {for(j=i+1;j<=u;j++)
                  {for(r=0,l=1;l<=n;l++)
                  if(e[i][l]==e[j][l])
                          r++;
                  if(r==n)
                          h[j]=1;
                  else
                          break;}}
     for(j1=0,i=1;i<=u;i++)
           {if(!h[i])
                  {j1++;
                  for(j=1;j<=n;j++)
                          e1[j1][j]=e[i][j];}
           h[i]=0;}             
     y=0;
     if(i1!=j1)
           y=1;
     else
           for(i=1;i<=i1&&!y;i++)
           for(j=1;j<=i1&&!y;j++)
           for(l=1;l<=n&&!y;l++)
           if(d1[i][l]!=e1[i][l])
                  y=1;
     if(!y)
           fprintf(g,"DA\n");
     else
           fprintf(g,"NU\n");}
return 0;}