Pagini recente » Cod sursa (job #70952) | Cod sursa (job #615707) | Cod sursa (job #220563) | Rating Diana Piciu (DianaPiciu) | Cod sursa (job #2683522)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream in("nivele.in");
ofstream out("nivele.out");
int t,v[17];
void init()
{
for(int i=1,j=0; i<=50000; i*=2,j++)
v[j]=i;
}
bool rez(int w[],int n)
{
int s=w[n],i,sm=n;
for(i=n-1; i>0; i--)
{
if(w[i])
{
//out<<sm<<'\n';
if(s%v[sm-i]==0)
s=s/v[sm-i]+w[i],sm=i;
else
return 0;
}
}
if(s%v[sm-1]==0)
return 1;
else
return 0;
}
void cit()
{
int n,maxi=50001,k=0,w[50002]={0},naxi=0;
in>>n;
for(int i=0; i<n && k==0; i++)
{
int x;
in>>x;
if(x<=maxi)
{
w[x]++;
if(naxi<x)
naxi=x;
}
else
k=1;
}
if(k==0)
{
if(rez(w,naxi))
out<<"DA"<<'\n';
else
out<<"NU"<<'\n';
}
else
out<<"NU"<<'\n';
}
int main()
{
in>>t;
init();
for(int i=0; i<t; i++)
cit();
return 0;
}