Cod sursa(job #2478539)

Utilizator Teo_1101Mititelu Teodor Teo_1101 Data 22 octombrie 2019 12:56:26
Problema Amlei Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.72 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;
const bool op(const int x[], const int y[] )
{
    for( int i = 1; i <= N; ++i )
    {
        if( x[i] < y[i] ) return 1;
        if( x[i] > y[i] ) return 0;
    }
}

bool comp( int x[], int y[] )
{
    for( int i = 1; i <= N; ++i )
        if( x[i] != y[i] )return 0;
    return 1;
}
struct conjuctii
{
    int c[NMAX];

    bool operator < ( const conjuctii & A ) const
    {
        return op( c, A.c );
    }
};

conjuctii CT[TMAX];
conjuctii CU[TMAX];

void Read()
{
    while( fin >> N )
    {
        fin >> T >> U;
        for( int i = 1; i <= T; ++i )
        {
            for( int j = 1; j <= N; ++j )
                fin >> CT[i].c[j];
            sort(CT[i].c + 1, CT[i].c + N + 1);
        }
        sort( CT + 1, CT + T + 1);

        /*for( int i = 1; i <= T; ++i )
        {
            for( int j = 1; j <= N; ++j )
                cout << CT[i].c[j] << ' ';
            cout << '\n';
        }cout << '\n';*/

        for( int i = 1; i <= U; ++i )
        {
            for( int j = 1; j <= N; ++j )
                fin >> CU[i].c[j];
            sort(CU[i].c + 1, CU[i].c + N + 1);
        }
        sort( CU + 1, CU + U + 1);

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

           for( int j = 0; j < U; ++j )
            if(comp( CT[i].c, CU[j].c )  ) { ok = true; break; }
        }

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