Pagini recente » Cod sursa (job #1014915) | Cod sursa (job #621861) | Cod sursa (job #1789695) | Cod sursa (job #2571533) | Cod sursa (job #2489911)
#include <fstream>
#include <algorithm>
#include <stack>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,x,i,l[100005],nr,poz,prc[100005],a[100005],b[100005],in[100005],v[100005];
stack <int> st;
void citire()
{
for(int i=1;i<=n;i++)
f>>a[i];
for(int i=1;i<=n;i++)
b[i]=a[i];
sort(b+1,b+n+1);
for(int i=1;i<=n;i++)
{
int x=a[i];
v[i]=lower_bound(b+1,b+n+1,x)-b;
in[v[i]]=a[i];
}
}
int main()
{
f>>n;
citire();
x=v[1];
l[1]=x;
nr=1;
for(i=2;i<=n;i++)
{
x=v[i];
poz=lower_bound(l+1,l+nr+1,x)-l;
l[poz]=x;
prc[x]=l[poz-1];
if(poz>nr)
nr=poz;
}
g<<nr<<'\n';
x=l[nr];
st.push(x);
while(prc[x]!=0)
{
x=prc[x];
st.push(x);
}
while(!st.empty())
{
g<<in[st.top()]<<' ';
st.pop();
}
g<<'\n';
return 0;
}