Pagini recente » Cod sursa (job #1817692) | Cod sursa (job #1596456) | Cod sursa (job #783373) | Cod sursa (job #2832935) | Cod sursa (job #1714070)
# include <fstream>
# define DIM 100010
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int v[DIM],m[DIM],t[DIM],sol[DIM],n,i,st,dr,mij,maxim,k;
int main () {
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i];
for(i=1;i<=n;i++){
st=1;
dr=maxim;
while(st<=dr){
mij=(st+dr)/2;
if(v[m[mij]]<v[i])
st=mij+1;
else
dr=mij-1;
}
m[st]=i;
t[i]=m[st-1];
if(st>maxim)
maxim=st;
}
fout<<maxim<<"\n";
i=m[maxim];
while(i!=0){
sol[++k]=i;
i=t[i];
}
for(i=k;i>=1;i--)
fout<<v[sol[i]]<<" ";
fout<<"\n";
return 0;
}