Cod sursa(job #2683547)

Utilizator paulm238Madaras Paul paulm238 Data 11 decembrie 2020 16:39:11
Problema Nivele Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

ifstream in("nivele.in");
ofstream out("nivele.out");

int v[50001];

int la2(int x)
{
    int s = 1;
    while(x)
    {
        s = s * 2;
        x = x- 1;
    }
    return s;
}

int tricolor(int a, int b)
{
    int y = 1;
    for(int i = a; i < b; i ++)
    {
        y = y * 2;
    }
    return y;
}

int verf(int v[], int n)
{
    sort(v + 1, v + n + 1);
    int k = la2(v[1] - 1) - 1;
    int l = 2;
    while(l <= n)
    {
        if(v[l] == v[l-1])
            k = k - 1;
        if(v[l] != v[l-1])
        {
            int h = tricolor(v[l-1],v[l]);
            k = k * h - 1;
        }
        l = l + 1;
    }
    if( k == 0 )
        return 1;
    else
        return 0;
}

int main()
{
    int t, j, n, a, i;
    in >> t;
    for(j = 1; j <= t; j ++)
    {
        in >> n;
        for(i = 1; i <= n; i ++ )
        {
            in >> a;
            v[i] = a;
        }
        if(verf(v, n))
            out << "DA" << '\n';
        else
            out << "NU" << '\n';
    }
    return 0;
}