Pagini recente » Istoria paginii runda/simv_2 | Cod sursa (job #1044045) | Cod sursa (job #2600644) | Cod sursa (job #2395405) | Cod sursa (job #782525)
Cod sursa(job #782525)
# include <cstdio>
using namespace std;
typedef struct nod
{
long long info;
nod *urm;
};
nod *p, *a, *q, *prim, *ultim;
long long ct, val, stiva[50005];
int main()
{int i, j, t, n;
freopen("nivele.in","r",stdin);
freopen("nivele.out","w",stdout);
scanf("%d",&t);
for (i = 1; i <= t; i++)
{
scanf("%d",&n);
for (j = 1; j <= n; j++)
{
scanf("%lld",&val);
if (!prim) {
prim = new nod;
prim -> info = val;
ultim = prim;
}
else {
p = new nod;
p -> info = val;
ultim -> urm = p;
ultim = p;
}
}
ultim -> urm = prim;
//while (n > 1 && ct)
//{
q = ultim;
for (p = prim; n > 1 || ct; q = q -> urm)
if (p -> info == stiva[ct]) {
ct --;
p -> info --;
}
else {
if (n == 1 && ct) break;
stiva[++ct] = p -> info;
if (p == prim)
{
a = prim;
ultim -> urm = prim -> urm;
prim = prim -> urm;
p = p -> urm;
delete(a);
n--;
}
else{
a = q -> urm;
q -> urm = p -> urm;
if (a == ultim) ultim = q;
p = p -> urm;
delete(p);
n--;
}
}
if (n == 1 && p -> info == 1) printf("DA\n");
else printf("NU\n");
}
return 0;
}