Pagini recente » Diferente pentru problema/fibo2 intre reviziile 2 si 1 | Cod sursa (job #2375164) | Cod sursa (job #374798) | Profil BonnY | Cod sursa (job #3313887)
#include<fstream>
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
int a[100001],b[100001],c[100001];
int main()
{
int m=0,n;
cin>>n;
for(int i=1;i<=n;++i) {
if(cin>>a[i],a[i]>a[b[m]])
c[i]=b[m],b[++m]=i;
int j=0;
for(int k=m;j<k;) {
int l=(j+k)/2;
a[b[l]]<a[i]?j=l+1:k=l;
}
if(a[i]<a[b[j]]&&(b[j]=i,j))
c[i]=b[j-1];
}
for(int i=m,j=b[i];i--;b[i]=c[j],j=c[j]);
cout<<m<<'\n';
for(int i=1;i<=m;cout<<a[b[i++]]<<' ');
return 0;
}