Pagini recente » Cod sursa (job #2954519) | Cod sursa (job #2115679) | Cod sursa (job #1342293) | Cod sursa (job #2948857) | Cod sursa (job #2404295)
#include <iostream>
#include <fstream>
#include <cstring>
#include <vector>
#include <algorithm>
#define DN 100005
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int v[DN],mini[DN],n,sz,pos[DN];
vector<int> rez;
void read(){
f>>n;
for(int i=1;i<=n;++i)
f>>v[i];
}
void solve(){
memset(mini,127,sizeof(mini));
mini[0] = 0;
for(int i=1;i<=n;++i){
int j;
for(j=sz;j>=0 and mini[j] >= v[i];--j);
pos[i] = j + 1;
mini[j+1] = min(mini[j+1],v[i]);
sz=max(sz,j+1);
}
g<<sz<<"\n";
int current = sz;
for(int i=n;i>=1 and current >=1;--i)
if(pos[i] == current){
rez.push_back(v[i]);
--current;
}
reverse(rez.begin(),rez.end());
for(int i=0;i<rez.size();++i)
g<<rez[i]<<" ";
}
int main()
{
read();
solve();
return 0;
}