Pagini recente » Cod sursa (job #2802756) | Cod sursa (job #2667964) | Cod sursa (job #1702037) | Cod sursa (job #2024291) | Cod sursa (job #19074)
Cod sursa(job #19074)
#include<stdio.h>
char nc;
int aux,linii,w,b,n,t,u,i,j,a,p,q,ok,x[50][50],y[50][50];
int egx(int ip,int jp)
{
for(int z=1;z<=n;z++) if(x[ip][z]!=x[jp][z])return 0;
return 1;
}
int swapx(int ip,int jp)
{
for(int z=1;z<=n;z++)
{aux=x[ip][z];x[ip][z]=x[jp][z];x[jp][z]=aux;}
return 0;
}
int elibx(int ip)
{
for(int z=1;z<=n;z++)
x[ip][z]=0;
return 0;
}
int egy(int ip,int jp)
{
for(int z=1;z<=n;z++) if(y[ip][z]!=y[jp][z])return 0;
return 1;
}
int swapy(int ip,int jp)
{
for(int z=1;z<=n;z++)
{aux=y[ip][z];y[ip][z]=y[jp][z];y[jp][z]=aux;}
return 0;
}
int eliby(int ip)
{
for(int z=1;z<=n;z++)
y[ip][z]=0;
return 0;
}
int per()
{
int jy,okz;
for(int z=1;z<=u;z++)
{
okz=1;
for(int zz=1;zz<=n;zz++)
if(x[1][zz]!=y[z][zz]){okz=0;break;}
if(okz) return z;
}
return 0;
}
int main()
{ FILE *f,*g;
f=fopen("amlei.in","rb");
while(!feof(f))
{ nc=getc(f);
if(nc=='\n')linii++;
}
fclose(f);
w=linii/3;
f=fopen("amlei.in","r");
g=fopen("amlei.out","w");
for(b=1;b<=w;b++)
{ fscanf(f,"%d%d%d",&n,&t,&u);
for(i=1;i<=t;i++)
for(j=1;j<=n;j++)
{ fscanf(f,"%d",&a);
if(a>0) x[i][a]=1;}
for(i=1;i<=u;i++)
for(j=1;j<=n;j++)
{ fscanf(f,"%d",&a);
if(a>0) y[i][a]=1;}
for(i=1;i<t;i++)
for (j=i+1;j<=t;j++)
while(egx(i,j)==1)
{swapx(j,t);elibx(t);t--;}
for(i=1;i<u;i++)
for (j=i+1;j<=u;j++)
while(egy(i,j)==1)
{swapy(j,u);eliby(u);u--;}
ok=1;
if(t!=u) ok=0;
if(ok)
do{ j=per();
if(j==0) ok=0;
if(ok){ swapx(1,t);elibx(t);t--;
swapy(j,u);eliby(u);u--;
}
}while(ok&&(t>0));
if(ok==0){fprintf(g,"NU\n");
for(p=1;p<=t;p++)
elibx(p);
for(p=1;p<=u;p++)
eliby(p);
}
else fprintf(g,"DA\n");
}
fcloseall();
return 0;
}