Cod sursa(job #793410)

Utilizator misinozzz zzz misino Data 2 octombrie 2012 20:51:06
Problema Subsir 2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<fstream>
using namespace std;
ifstream f("subsir2.in");
ofstream g("subsir2.out");
int maxi,poz,mini,i,j,n,a[5001],l[5001],p[5001];
int main()
{f>>n;
for(i=1;i<=n;++i)
	f>>a[i];
a[n+1]=888888888;
for(i=n;i;--i)
{maxi=10000;
mini=888888888;
for(j=i+1;j<=n+1;++j)
	if(a[i]<=a[j])
	{if(a[j]<mini&&l[j]<maxi)
	{maxi=l[j];
	poz=j;
	}
	else
		if(l[j]==maxi)
			if(a[j]<a[poz])
			{poz=j;
			}}
l[i]=maxi+1;
if(l[i]==10001)
	l[i]=1;
p[i]=poz;
}
mini=0;
for(i=1;i<=n;++i)
	if(l[i]>mini)
	{for(j=1;j<i;++j)
		if(a[i]>=a[j])
			break;
	if(j>=i)
	{mini=l[i];
	poz=i;
	}
	}
	else
		if(l[i]==mini)
			if(a[i]<a[poz])
			{for(j=1;j<i;++j)
				if(a[i]>=a[j])
					break;
			if(j>=i)
				poz=i;
			}
g<<mini<<'\n';
while(poz!=n+1)
{g<<poz<<' ';
poz=p[poz];
}
g<<'\n';
return 0;
}