Pagini recente » Cod sursa (job #1274287) | Cod sursa (job #1495047) | Cod sursa (job #1868383) | Cod sursa (job #2744953) | Cod sursa (job #739399)
Cod sursa(job #739399)
#include <cstdio>
#include <vector>
#include <algorithm>
#define MAX 100001
using namespace std;
vector<int>Q;
vector<int>::iterator it;
int n,k,V[MAX],BST[MAX];
int main(){
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(int i=0;i<n;i++)scanf("%d",&V[i]);
for(int i=0;i<n;i++){
it=lower_bound(Q.begin(),Q.end(),V[i]);
if(it==Q.end()){
Q.push_back(V[i]);
BST[i]=Q.size(); } else {
*it=V[i];
BST[i]=it-Q.begin()+1; }
}
k=Q.size();
Q.clear();
for(int i=n-1;i>=0;i--)
if(BST[i]==k)Q.push_back(V[i]),k--;
printf("%d\n",Q.size());
for(int i=Q.size()-1;i>=0;i--)printf("%d ",Q[i]);
}