Pagini recente » Cod sursa (job #3136657) | Cod sursa (job #364752) | Cod sursa (job #2456097) | Cod sursa (job #1030036) | Cod sursa (job #137501)
Cod sursa(job #137501)
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const long MAX=50010;
long A[2][MAX];
long n,t;
int solve() {
long i,m,k,nn, d;
for (i=0, m=0; i<n; ++i) m = max(A[0][i],m);
for (k = 1; m>1; --m, k=!k) {
nn = n;
for (i=0, d=0; i+d<n; ++i)
if ( A[!k][i+d]==m && A[!k][i+d]==A[!k][d+i+1] )
A[k][i] = m-1, nn--, ++d;
else
A[k][i] = A[!k][i+d];
/* for (i=0; i<nn; ++i)
printf("%ld ", A[k][i]);
printf("\n");
*/ if ( n==nn )
return 0;
n = nn;
}
return 1;
}
int main() {
freopen("nivele.in", "r", stdin);
freopen("nivele.out", "w", stdout);
scanf("%ld", &t);
while ( t-- ) {
scanf("%ld", &n);
long i;
for (i=0; i<n; ++i)
scanf("%ld", A[0]+i);
if ( solve() )
printf("DA\n");
else
printf("NU\n");
}
fclose(stdout);
fclose(stdin);
return 0;
}