Cod sursa(job #113768)

Utilizator crawlerPuni Andrei Paul crawler Data 11 decembrie 2007 14:52:14
Problema Amlei Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.7 kb
#include <cstdio>
#include <algorithm>

using namespace std;

int a[512][64], b[512][64];
int x[512], y[512];

int solve()
{
     int n,t,u;

     while (scanf("%d", &n)) 
     {
     if(n<1 || n>50) break;      
     scanf("%d%d", &t,&u);
     
     for (int i=1;i<=t;++i)
      for (int j=1;j<=n;++j)
       scanf("%d", &a[i][j]);     

     for (int i=1;i<=u;++i)
      for (int j=1;j<=n;++j)
       scanf("%d", &b[i][j]);     
       
     for (int i=1;i<=t;++i)
      sort(a[i]+1,a[i]+n+1);         

     for (int i=1;i<=u;++i)
      sort(b[i]+1,b[i]+n+1);         
      
     for (int i=1;i<t;++i)
     {
       int ok=1;
       for (int j=1;j<=n;++j)  
           if (a[i][j] != a[i+1][j])
           {
                       ok=0;
                       break;
           }
       x[i] = ok^1;             
     }       

     for (int i=1;i<u;++i)
     {
       int ok=1;
       for (int j=1;j<=n;++j)  
           if (b[i][j] != b[i+1][j])
           {
                       ok=0;
                       break;
           }
       y[i] = ok^1;             
     }       
     int good=1;
     int A=1,B=1;
     while (A<=t && B<=u)
     {
           while (x[A]) ++A;    
           while (y[B]) ++B;    
           for (int i=1;i<=n;++i)
           if (a[A][i] != b[B][i]) 
           {
                       good = 0;
                       break;
           }
           if (good == 0) break;
           ++A;++B;
     }          
     if (good) printf("DA\n"); else printf("NU\n");
     n=-1;
     }
     return 0;
}

int main()
{
    freopen("amlei.in","r",stdin);
    freopen("amlei.out","w",stdout);
 
    solve();
        
    return 0;
}