Pagini recente » Cod sursa (job #1627973) | Cod sursa (job #2720391) | Cod sursa (job #716412) | Cod sursa (job #2223903) | Cod sursa (job #1361890)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,v[10000],sm[10000],aux[100000];
void citire()
{int i;
f>>n;
for(i=1;i<=n;i++)f>>v[i];
}
void sol()
{ sm[n]=1;
aux[0]=2000000001;
aux[1]=v[n];
int i,l=1,val;
for(i=n-1;i;i--)
{
int t=l;
while(v[i]>=aux[t])t--;
sm[i]=t+1;
aux[sm[i]]=max(v[i],aux[sm[i]]);
if(l<sm[i])
l=sm[i];
}
val=0;
g<<l<<endl;
for(i=1;i<=n;i++)
if(sm[i]==l&&v[i]>val)
{g<<v[i]<<" ";l--;val=v[i];}
}
int main()
{
citire();
sol();
return 0;
}