Cod sursa(job #137415)

Utilizator MarquiseMarquise Marquise Data 17 februarie 2008 12:01:46
Problema Nivele Scor 0
Compilator cpp Status done
Runda preONI 2008, Runda 4, Clasele 11-12 Marime 0.82 kb
#include <stdio.h>
#include <string.h>

#define NMAX 501

int v[NMAX], t, n;


int main()
{
	int i, j;
	long long p;
	int s, ex, r, max = 0;
	freopen("nivele.in", "r", stdin);
	freopen("nivele.out", "w", stdout);
	scanf("%d", &t);
	for ( i = 1; i <= t; i++)
	{
		scanf("%d", &n);
		max = 0;
		for ( j = 1; j <= n; j++)
		{
			scanf("%d", &r);
			v[r]++;
			if ( r > max)
				max = r;
		}
		if ( max <= 62)
		{
			ex = 1;
			if ( v[1] > 1) ex = 0;

			s = 0;

			for ( j = 2; j <= max && ex; j++)
			{
				p = 2 << (j-s-1) -1;
				if ( p < v[j])
					ex = 0;
				s += v[j];
			}
			if (ex == 0)
				printf("NU\n");
			else
			{
				if ( v[max] % 2 == 1)
					printf("NU\n");
				else
					printf("DA\n");
			}
		}
		else
			printf("NU\n");
		memset(v, 0, sizeof(v));
	}
	return 0;
}