Pagini recente » Cod sursa (job #1150608) | Cod sursa (job #2905222) | Cod sursa (job #1537506) | Cod sursa (job #2099023) | Cod sursa (job #2546369)
#include <bits/stdc++.h>
using namespace std;
vector<int>v;
int val[100005];
int poz[100005];
int n,i;
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d%d",&n,&i);
int cnt=0;
for(i=1;i<=n;i++)
{
scanf("%d",&val[i]);
int nr=val[i];
if(v.empty()){v.push_back(nr);poz[1]=1;cnt=1;}
else
{
vector<int>::iterator it;
it=lower_bound(v.begin(),v.end(),nr);
if(it==v.end())
{
v.push_back(nr);
poz[i]=++cnt;
}
else
v[it-v.begin()]=nr,poz[i]=it-v.begin()+1;
}
}
cout<<cnt<<endl;
stack<int>st;
for(i=n;i>=1;--i)
{
if(poz[i]==cnt)
{
st.push(val[i]);
--cnt;
}
}
while(!st.empty())
{
cout<<st.top()<<" ";
st.pop();
}
return 0;
}