Cod sursa(job #137781)

Utilizator razvi9Jurca Razvan razvi9 Data 17 februarie 2008 14:44:27
Problema Nivele Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include<fstream>
using namespace std;
int n,a[50001],t,i;
int b[100000],m;
void add(int i,int j)
{
	for(;j<=i;j++)
		b[++m]=j;
}
int isarbore()
{
	m=0;
	add(a[1],2);
	for(i=2;i<=n;i++)
	{
		if(!m || !b[m] || a[i]<b[m]) return 0;
		if(a[i]==b[m]) m--;
		else{
			m--;
			add(a[i],b[m+1]+1);}
	}
	if(m) return 0;
	return 1;
}
int main()
{
	ifstream fin("nivele.in");
	ofstream fout("nivele.out");
	fin>>t;
	for(;t;t--)
	{
		fin>>n;
		for(i=1;i<=n;i++)
			fin>>a[i];
		if(isarbore()) fout<<"DA"<<endl;
		else fout<<"NU"<<endl;
	}
	fout.close();
}