Pagini recente » Cod sursa (job #3193941) | Cod sursa (job #372695) | Cod sursa (job #2009215) | Cod sursa (job #155211) | Cod sursa (job #1650841)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,v[100005],pos[100005],m[100005],prec[100005],lmax,pmax,nsol,sol[100005];
int main()
{
int i,ans;
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
pos[1]=1; m[1]=v[1]; prec[1]=0; lmax=1; pmax=1;
for(i=2;i<=n;i++)
{
ans=lower_bound(m+1,m+lmax+1,v[i])-m;
pos[ans]=i; m[ans]=v[i]; prec[i]=pos[ans-1];
if (ans>lmax) {lmax=ans; pmax=i;}
}
while(pmax)
{ nsol++; sol[nsol]=v[pmax];
pmax=prec[pmax];
}
g<<nsol<<"\n";
for(i=nsol;i>=1;i--)
g<<sol[i]<<" ";
return 0;
}