Cod sursa(job #2478543)

Utilizator Teo_1101Mititelu Teodor Teo_1101 Data 22 octombrie 2019 13:00:15
Problema Amlei Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.58 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

const int NMAX = 51;
const int TMAX = 501;

ifstream fin("amlei.in");
ofstream fout("amlei.out");

int N, T, U;
long long CT[501];
long long CU[501];

void Read()
{
    while( fin >> N >> T >> U)
    {
        long long x;
        for( int i = 1; i < TMAX; ++i )CT[i] = CU[i] = 0;

        for( int i = 1; i <= T; ++i )
        {
            for( int n = 1; n <= N; ++n )
            {
                fin >> x; //fout << CT[i] << ' '  << x << ' ';
                if( x > 0 )CT[i] = CT[i] | ( 1LL << x );//fout << CT[i] << '\n';
                //else if( CT[i] & ( 1LL << x ) ) CT[i] = CT[i] ^ ( 1LL << x );
            }
        }
        sort(CT+1, CT + T + 1);

        for( int i = 1; i <= U; ++i )
        {
            for( int n = 1; n <= N; ++n )
            {
                fin >> x;
                if( x > 0 )CU[i] = CU[i] | ( 1LL << x );
                //else if( CU[i] & ( 1LL << x ) ) CU[i] = CU[i] ^ ( 1LL << x );
            }
        }
        sort(CU + 1, CU + U + 1);

        //for( int i = 1; i <= T; ++i )fout << CT[i] << ' '; fout << '\n';
        //for( int i = 1; i <= U; ++i )fout << CU[i] << ' '; fout << '\n';

        bool ok = true;
        for( int i = 1; i <= T && ok; ++i )
        {
           ok = false;

           for( int j = 1; j <= U; ++j )
             if( CT[i] == CU[j] ) { ok = true; break; }
        }

        if( ok ) fout << "DA\n";
        else fout << "NU\n";
    }
}
int main()
{
    Read();
    return 0;
}