Pagini recente » Cod sursa (job #370927) | Cod sursa (job #855405) | Cod sursa (job #1462400) | Cod sursa (job #1823741) | Cod sursa (job #2711460)
#include <bits/stdc++.h>
#define dim 100009
using namespace std;
ifstream fin ("scmax.in");
ofstream fout("scmax.out");
int n,v[dim],d[dim],p[dim],ans[dim],k;
int32_t main()
{
fin>>n;
for(int i=1;i<=n;i++)
fin>>v[i];
for(int i=1;i<=n;i++)
if(v[i]>d[k])
d[++k]=v[i],
p[i]=k;
else{
int st=1,dr=k,poz=k+1;
while(st<=dr){
int mij=(st+dr)/2;
if(v[i]<=d[mij]){
poz=mij;
dr=mij-1;
}
else
st=mij+1;
}
d[poz]=v[i];
p[i]=poz;
}
fout<<k<<'\n';
int j=n;
for(int i=k;i>=1;i--){
while(p[j]!=i)
j--;
ans[i]=v[j];
}
for(int i=1;i<=k;i++)
fout<<ans[i]<<' ';
}