Cod sursa(job #177634)

Utilizator stefanrStefan Ruseti stefanr Data 13 aprilie 2008 13:34:18
Problema Nivele Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<fstream.h>
ifstream fin("nivele.in");
ofstream fout("nivele.out");

struct nod
{int a,b;
 nod *urm;}*u;

int t,n,k;

void sterge()
{nod *p;
p=u->urm;
delete u;
u=p;
}

void scade()
{u->b--;
 k--;
 if(u->a>u->b) sterge();
}

void adauga(int x)
{int y=u->b;
 scade();
 nod *p;
 p=new nod;
 p->a=y+1;
 p->b=x;
 k+=x-y;
 p->urm=u;
 u=p;
}

void curata()
{while(u!=NULL) sterge();
}

int main()
{fin>>t;
int i,j,m,x,ok;
for(i=1;i<=t;i++)
 {fin>>m;
  k=0;
  ok=1;
  for(j=1;j<=m && ok;j++)
   {fin>>x;
    if(u==NULL)
     {u=new nod;
      u->a=2;
      u->b=x;
      u->urm=NULL;
      k=x-1;
     }
    else
     {if(u->b==x) scade();
      else
       if(x<u->b) ok=0;
       else adauga(x);
     }
    if(k==0 && j<m) ok=0;
   }
  if(k>0) ok=0;
  if(ok) fout<<"DA\n";
  else fout<<"NU\n";
  curata();
 }
fin.close();
fout.close();
return 0;
}