Pagini recente » Cod sursa (job #301614) | Cod sursa (job #1622641) | Cod sursa (job #464838) | Cod sursa (job #2886442) | Cod sursa (job #874711)
Cod sursa(job #874711)
#include<iostream>
#include<fstream>
using namespace std;
int a[100001],i,j,b[100001],n,l,p,r,q,c[100001],k,x[100001];
int main()
{
ifstream fin("scmax.in");
ofstream fout("scmax.out");
fin>>n;
for(i=1;i<=n;++i)
fin>>a[i];
l=0;
for(i=1;i<=n;++i)
{
p=1;
r=l;
while(p<=r)
{
q=p+(r-p)/2;
if(a[i]<=a[b[q]])
r=q-1;
else p=q+1;
}
b[p]=i;
if(p>i)
l++;
c[i]=0;
if(p>1)
c[i]=b[p-1];
}
k=0;
for(i=b[l];i;i=c[i])
{
k++;
x[k]=a[i];
}
for(i=k;i;--i)
fout<<x[i]<<' ';
fout.close();
return 0;
}