Pagini recente » Cod sursa (job #1433192) | Cod sursa (job #407533) | Cod sursa (job #625530) | Cod sursa (job #404407) | Cod sursa (job #1361891)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,v[100003],sm[100003],aux[100003];
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;
}