Pagini recente » Cod sursa (job #3135131) | Cod sursa (job #2776447) | Cod sursa (job #2348685) | Cod sursa (job #410294) | Cod sursa (job #2744691)
#include <fstream>
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
int d[100001],v[100001];
int main()
{
int n,i,k=1,st,dr,mij,poz,last,a;
cin>>n>>v[1];
d[k]=1;
for(i=2;i<=n;i++)
{
cin>>a;
st=1;
dr=k;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[d[mij]]>=a)
dr=mij-1;
else
st=mij+1;
}
d[dr+1]=i;
k=max(dr+1,k);
v[i]=a;
}
cout<<k<<'\n';
poz=d[k];
last=k;
d[last]=v[poz];
while(poz>1)
{
poz--;
if(v[poz]<d[last])
{
last--;
d[last]=v[poz];
}
}
for(i=1;i<=k;i++)
cout<<d[i]<<" ";
return 0;
}