Cod sursa(job #271223)

Utilizator drag0s93Mandu Dragos drag0s93 Data 4 martie 2009 23:22:09
Problema Secv Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include<stdio.h>

#define IN "secv.in","r",stdin
#define OUT "secv.out","w",stdout

int n,nr=1,poz,poz1;
int v[5020];
int stiva[5020];

void citire()
{
	freopen(IN);
	scanf("%d",&n);
	for(int i=1;i<=n;++i)
		scanf("%d",&v[i]);
}
void solve()
{
	int e=2;
	stiva[1]=v[1];
	poz=1;
	bool ok=true;
	for(int i=2;i<=n;++i)
	{
		while(stiva[e-1]>v[i])
		{
			for(int j=1;j<i && ok!=false;++j)
				if(v[i]==stiva[j])
					ok=false;
			if(ok==false)
				break;
			--e;
			--nr;
		}
		ok=true;
		if(stiva[e-1]<v[i])
		{
			if(e==1)
				poz=i;
			poz1=i;
			stiva[e++]=v[i];
			++nr;
		}
	}
}
void verific()
{
	bool ok=false;
	int cnr=nr;
	for(int i=1;i<=n;++i)
	{
		for(int j=1;j<=cnr && ok!=true;++j)
			if(v[i]==stiva[j])
				ok=true;
			else ok=false;
		if(ok!=true)
			++nr;
	}
	for(int i=poz;i<=poz1;++i)
		if(stiva[i]!=v[i])
			++nr;
}
void afisare()
{
	freopen(OUT);
	verific();
	printf("%d",nr);
}
int main()
{
	citire();
	solve();
	afisare();
	return 0;
}