Cod sursa(job #581640)

Utilizator eudanipEugenie Daniel Posdarascu eudanip Data 14 aprilie 2011 14:21:54
Problema Amlei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.57 kb
#include<stdio.h>
#include<algorithm>
using namespace std;

#define ll long long

int n,m,k,n1,n2;
ll v1[505],v2[505];
int v[505];

inline ll cheie()
{
    int i;
    ll put=1,sol=0;
    for(i=0;i<n;i++)
    {
        if(v[i]<0)
            sol+=put;
        put*=2;
    }
    return sol;
}

int cmp(int a,int b)
{
    int val1=a,val2=b;
    if(val1<0) val1*=-1;
    if(val2<0) val2*=-1;
    return val1<val2;
}

int main ()
{
    int i,j,val;
    
    freopen("amlei.in","r",stdin);
    freopen("amlei.out","w",stdout);
    while(1)
    {
        n=100000;
        scanf("%d%d%d",&n,&m,&k);
        if(n==100000)
            break;
        for(i=1;i<=m;i++)
        {
            for(j=1;j<=n;j++)
                scanf("%d",&v[j-1]);
            sort(v,v+n,cmp);
            v1[i]=cheie();
        }
        for(i=1;i<=k;i++)
        {
            for(j=1;j<=n;j++)
                scanf("%d",&v[j-1]);
            sort(v,v+n,cmp);
            v2[i]=cheie();
        }
        sort(v1+1,v1+m+1);
        sort(v2+1,v2+k+1);
        n1=n2=0;
        for(i=1;i<=m;i++)
            if(i==1 || v1[i]!=v1[i-1])
                v1[++n1]=v1[i];
        for(i=1;i<=k;i++)
            if(i==1 || v2[i]!=v2[i-1])
                v2[++n2]=v2[i];
        if(n1!=n2)
        {
            printf("NU\n");
            continue;
        }
        for(i=1;i<=n1;i++)
            if(v1[i]!=v2[i])
                break;
        if(i<=n1)
            printf("NU\n");
        else
            printf("DA\n");
    }
    return 0;
}