Pagini recente » Cod sursa (job #665010) | Cod sursa (job #746220) | Cod sursa (job #3207708) | Cod sursa (job #2965191) | Cod sursa (job #18811)
Cod sursa(job #18811)
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#define NMAX 60
#define MMAX 800
int i,j,n,m,k,A[MMAX][NMAX],B[MMAX][NMAX],VALS[NMAX];
void getVals(int x)
{
int i;
memset(VALS, 0 ,sizeof(VALS));
for (i=1;i<=n;i++)
if (A[x][i]<0)
VALS[abs(A[x][i])]=0;
else VALS[abs(A[x][i])]=1;
}
int Add(int x, int y)
{
if (x == 1 && y == 1)
return 1;
else
if (x == 1 && y == 0)
return 0;
else
if (x == 0 && y == 1)
return 0;
else return 0;
}
int Orcomp(int x, int y)
{
if (x == 1 && y == 1)
return 1;
else
if (x == 1 && y == 0)
return 1;
else
if (x == 0 && y == 1)
return 1;
else
return 0;
}
int opp(int x)
{
if (x == 0)
return 1;
else return 0;
}
int getValu_B(int n, int m)
{
int VAL=0,i,j,VAL_CUR;
for (i=1;i<=m;i++)
{
VAL_CUR=1;
for (j=1;j<=n;j++)
if (B[i][j]<0)
VAL_CUR = Add(VAL_CUR,opp(VALS[abs(B[i][j])]));
else VAL_CUR = Add(VAL_CUR,VALS[abs(B[i][j])]);
VAL = Orcomp(VAL,VAL_CUR);
}
return VAL;
}
int main()
{
freopen("amlei.out","w",stdout);
FILE* f = fopen("amlei.in","r");
while (!feof(f))
{
memset(A, 0 ,sizeof(A));
memset(B, 0 ,sizeof(B));
fscanf(f,"%d%d%d",&n,&m,&k);
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
fscanf(f,"%d",&A[i][j]);
for (i=1;i<=k;i++)
for (j=1;j<=n;j++)
fscanf(f,"%d",&B[i][j]);
int gasit=1;
for (i=1;i<=m;i++)
{
getVals(i);
if (getValu_B(n,k) == 0)
gasit=0;
}
if (gasit == 1)
printf("DA\n");
else printf("NU\n");
fscanf(f,"\n");
}
fclose(stdout);
fclose(f);
return 0;
}