Cod sursa(job #2477793)

Utilizator Teo_1101Mititelu Teodor Teo_1101 Data 21 octombrie 2019 09:48:34
Problema Amlei Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.04 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);

        if( T < U )
        {
            int i = 1, j = 1;
            while( i <= T && j <= U )
            {
                if( comp( CT[i].c, CU[j].c ) == 1 )i++;
                j++;
            }
            if( i == T + 1 )fout << "DA" << '\n';
            else fout << "NU" << '\n';
        }
        else
        {
            int i = 1, j = 1;
            while( i <= U && j <= T )
            {
                if( comp( CU[i].c, CT[j].c ) == 1 )i++;
                j++;
            }
            if( i == U + 1 )fout << "DA" << '\n';
            else fout << "NU" << '\n';
        }
    }
}
int main()
{
    Read();
    return 0;
}