Pagini recente » Cod sursa (job #2013578) | Profil StarGold2 | Cod sursa (job #924468) | Cod sursa (job #1833880) | Cod sursa (job #2683571)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("nivele.in");
ofstream out("nivele.out");
int n, a[50001];
int tricolor(int x, int y)
{
if(y == 0)
return 1;
if(y == 1)
return x;
int g = tricolor(x, y / 2);
if(y % 2 == 0)
return g * g;
else
return g * g * x;
}
int da(int n, int a[])
{
if(n > 50000)
return 0;
int i;
int ua = 1, ub = 1;
sort(a+1, a+n+1);
for(i = 1; i <= n; i ++)
{
if(ua <= 0 || a[i] - ub > 16)
return 0;
ua = ua * tricolor(2, a[i] - ub);
if(ua > n - i + 1)
return 0;
ua --;
ub = a[i];
}
if(ua == 0)
return 1;
else
return 0;
}
int main()
{
int t, i, j;
in >> t;
for(j = 1; j <=t; j ++)
{
in >> n;
for(i = 1; i <= n; i ++)
in >> a[i];
if(da(n, a) == 1)
out << "DA" << '\n';
else
out << "NU" << '\n';
}
return 0;
}