Pagini recente » Cod sursa (job #1505514) | Rating Gulyan (Gulyan89) | Cod sursa (job #1256476) | Cod sursa (job #1618320) | Cod sursa (job #2984865)
#include <bits/stdc++.h>
#include <fstream>
#define cin fin
#define cout fout
using namespace std;
ifstream cin ("scmax.in");
ofstream cout ("scmax.out");
int i,n,x,cnt,poz;
struct element
{
int ind,val;
};
element v[100008];
int sir[100008],tata[100008],aux,ras[100008],cnt2;
int caut_bin(int val)
{
int st=0,dr=cnt+1,mij;
while(dr-st>1)
{
mij=(st+dr)/2;
if(val<=v[mij].val)
{
dr=mij;
}
else
st=mij;
}
return dr;
}
int main()
{
cin>>n;
cin>>sir[1];
cnt=1;
v[1].val=sir[1];
v[1].ind=1;
for(i=2; i<=n; i++)
{
cin>>sir[i];
poz=caut_bin(sir[i]);
if(poz>=cnt+1)
cnt++;
v[poz].val=sir[i];
v[poz].ind=i;
tata[i]=v[poz-1].ind;
}
cout<<cnt<<'\n';
aux=v[cnt].ind;
while(aux!=0)
{
ras[++cnt2]=sir[aux];
aux=tata[aux];
}
for(i=cnt2;i>=1;i--)
cout<<ras[i]<<" ";
return 0;
}