Pagini recente » Cod sursa (job #2694416) | Cod sursa (job #1579121) | Cod sursa (job #2260847) | Cod sursa (job #875715) | Cod sursa (job #219683)
Cod sursa(job #219683)
#include <stdio.h>
#include<math.h>
#define MAX_N 50005
#define FIN "nivele.in"
#define FOUT "nivele.out"
int T, N, stk[MAX_N],max;
int putere(int n){
int k=1;
int ok=0;
while(!ok && k<100000){
if(n==pow(2,k))
ok=1;
else k++;
}
return ok;
}
int main()
{
int i,x,niv,lvs,ok;
freopen(FIN, "r", stdin);
freopen(FOUT, "w", stdout);
for (scanf("%d", &T); T; --T){
ok=1;max=0;for(i=1;i<=50000;i++) stk[i]=0;
scanf("%d", &N);
for (i = 1; i <= N; ++i){
scanf("%d",&x);
stk[x]++;if(max<x) max=x;
}
niv=max;
lvs=stk[niv];
if(!putere(lvs)||lvs>pow(2,niv-1) ) ok=0;
else { while(niv>=3 && ok){
niv--;
lvs=stk[niv];
if(lvs>pow(2,niv-1)-stk[niv+1]/2)
ok=0;
}
}
if(!( stk[2]==0 ||stk[2]==1 ||stk[2]==2))
ok=0;
if(!ok) printf("%s\n","NU");
else printf("%s\n","DA");
}
return 0;
}