Pagini recente » Cod sursa (job #714150) | Cod sursa (job #3344997) | Cod sursa (job #3344937) | Cod sursa (job #711207) | Cod sursa (job #3344944)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
const int nmax=1e5;
int n, v[nmax+5], tt[nmax+5];
vector<int> cap, ans;
bool cmp(int a, int b)
{
return v[a]<v[b];
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>v[i];
for(int i=1;i<=n;i++)
{
auto it=lower_bound(cap.begin(), cap.end(), i, cmp);
int poz=it-cap.begin();
if(poz>0)
tt[i]=cap[poz-1];
if(it==cap.end())
cap.push_back(i);
else
*it=i;
}
cout<<cap.size()<<'\n';
for(int i=cap[cap.size()-1];i>0;i=tt[i])
ans.push_back(v[i]);
for(int i=ans.size()-1;i>=0;i--)
cout<<ans[i]<<' ';
return 0;
}