Cod sursa(job #1155920)

Utilizator romircea2010FMI Trifan Mircea Mihai romircea2010 Data 27 martie 2014 11:53:10
Problema Amlei Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.84 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <map>

using namespace std;

const int NMax = 64;

inline bool cmp(const int &x, const int &y)
{
    return abs(x) < abs(y);
}

int n, t, u;
int a[NMax];
map <long long, bool> mpa, mpb;

int main()
{
    ifstream f("amlei.in");
    ofstream g("amlei.out");
    while(f >> n)
    {
        f >> t >> u;
        for (int i = 1, pas = 1; i <= n * t; ++ i)
        {
            f >> a[pas];
            ++ pas;
            if (pas > n)
            {
                sort(a+1, a+n+1, cmp);
                long long nr = 0LL;
                for (int j = 1; j <= n; ++ j)
                    nr += (a[j] > 0 ? 1 : 0) * (1LL << (1LL*j-1LL));
                mpa[nr] = true;
                pas = 1;
            }
        }

        for (int i = 1, pas = 1; i <= n * u; ++ i)
        {
            f >> a[pas];
            ++ pas;
            if (pas > n)
            {
                sort(a+1, a+n+1, cmp);
                long long nr = 0LL;
                for (int j = 1; j <= n; ++ j)
                    nr += (a[j] > 0 ? 1 : 0) * (1LL << (1LL*j-1LL));
                mpb[nr] = true;
                pas = 1;
            }
        }

        bool ok = true;
        for (map <long long, bool> :: iterator it = mpa.begin(); ok && it != mpa.end(); ++ it)
            if (!mpb[it -> first])
            {
                g<<"NU\n";
                ok = false;
            }
        for (map <long long, bool> :: iterator it = mpb.begin(); ok && it != mpb.end(); ++ it)
            if (!mpa[it -> first])
            {
                g<<"NU\n";
                ok = false;
            }
        if (ok)
            g<<"DA\n";
        mpa.clear();
        mpb.clear();
    }
    f.close();
    g.close();
    return 0;
}