Pagini recente » Cod sursa (job #562421) | Cod sursa (job #2457755) | Cod sursa (job #2720477) | Cod sursa (job #1340339) | Cod sursa (job #2170780)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,a[100005],v[100005],s[100005],sol[100005];
int top;
void CautBinar(int x)
{
int sol,st,fn,mij;
st=1;
fn=top;
while(st<=fn)
{
mij=(st+fn)/2;
if(a[x]<=a[v[mij]])
{
sol=mij;
fn=mij-1;
}
else st=mij+1;
}
s[x]=sol;
v[sol]=x;
}
int main()
{
int cnt;
fin>>n;
for(int i=1;i<=n;i++)
fin>>a[i];
for(int i=1;i<=n;i++)
{
if(a[v[top]]<a[i])
{
v[++top]=i;
s[i]=top;
}
else CautBinar(i);
}
cnt=top;
for(int i=n;i>=1;i--)
{
if(s[i]==cnt)
{
sol[cnt]=a[i];
cnt--;
}
}
fout<<top<<"\n";
for(int i=1;i<=top;i++)
fout<<sol[i]<<" ";
return 0;
}