Pagini recente » Cod sursa (job #1281001) | Cod sursa (job #70589) | Cod sursa (job #2365028) | Cod sursa (job #509106) | Cod sursa (job #2711862)
#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;
int 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]<<' ';
}