Pagini recente » Cod sursa (job #1990818) | Cod sursa (job #2461944) | Cod sursa (job #634493) | Cod sursa (job #2636095) | Cod sursa (job #18799)
Cod sursa(job #18799)
//#define DEBUG
#include <stdio.h>
FILE *fin, *fout;
#ifdef DEBUG
FILE *ftest;
#endif
int n,t,u;
int i,j,x;
int sfarsit_fisier;
int nr_teste;
int main(void)
{
int a[500][50];
int b[500][50];
int z[50];
unsigned long int test,tmp;
int val_A, val_B,val_andA,val_andB, verif;
fin=fopen("amlei.in","r");
fout=fopen("amlei.out","w");
#ifdef DEBUG
ftest=fopen("amlei.tst","w");
#endif
sfarsit_fisier=feof(fin);
while(!sfarsit_fisier)
{
fscanf(fin,"%d",&n);
fscanf(fin,"%d",&t);
fscanf(fin,"%d",&u);
//citeste prima formula din test
for (j=0;j<t;j++)
{
for (i=0; i<n; i++)
{
fscanf(fin,"%d",&x);
if (x<0) a[j][-x-1]=-1;
else a[j][x-1]=1;
}
}
//citeste a doua formula din test
for (j=0;j<u;j++)
{
for (i=0; i<n; i++)
{
fscanf(fin,"%d",&x);
if (x<0) b[j][-x-1]=-1;
else b[j][x-1]=1;
}
}
#ifdef DEBUG
fprintf(ftest,"A\n");
for (j=0;j<t;j++)
{
for (i=0;i<n;i++)
fprintf(ftest,"%2.0d, ",a[j][i]);
fprintf(ftest,"\n");
}
fprintf(ftest,"\n\nB\n");
for (j=0;j<u;j++)
{
for (i=0;i<n;i++)
fprintf(ftest,"%2.0d, ",b[j][i]);
fprintf(ftest,"\n");
}
fprintf(ftest,"\n\Z\n");
#endif //end test citire
nr_teste=1;
for (i=0;i<n;i++)
nr_teste=2*nr_teste;
verif=1;
for (test=0;test<nr_teste ;test++)
{
//vector de test
tmp=test;
for(i=0; i<n; i++)
{
z[i]=tmp&1;
tmp=tmp >> 1;
}
val_A=0;
val_B=0;
for (j=0;j<t;j++)
{
val_andA=1;
for (i=0; i<n;i++)
{
if (a[j][i]>0)
val_andA=val_andA&&z[i];
else
if(z[i]==1) val_andA=0;
}
val_A=val_A||val_andA;
}
for (j=0;j<u;j++)
{
val_andB=1;
for (i=0; i<n;i++)
{
if (b[j][i]>0)
val_andB=val_andB && z[i];
else
if(z[i]==1) val_andB=0;
}
val_B=val_B || val_andB;
}
verif=verif && (val_A == val_B);
#ifdef DEBUG
for (i=0;i<n;i++)
fprintf(ftest,"%2.0d, ",z[i]);
fprintf(ftest," A=%2.0d B=%2.0d",val_A, val_B);
fprintf(ftest,"\n");
#endif
//end test
}
if(verif)
fprintf(fout,"DA\n");
else
fprintf(fout,"NU\n");
sfarsit_fisier=feof(fin);
}
fclose(fin);
fclose(fout);
#ifdef DEBUG
fclose(ftest);
#endif
//end test
return 0;
}