Pagini recente » Cod sursa (job #1038939) | Cod sursa (job #2614385) | Cod sursa (job #184301) | Cod sursa (job #2400795) | Cod sursa (job #2233177)
#include <bits/stdc++.h>
#define nmax 100005
using namespace std;
fstream f1("scmax.in", ios::in);
fstream f2("scmax.in", ios::out);
int n,a[nmax],s[nmax],l,lung[nmax],nrsol,sol[nmax];
int cauta(int st, int dr, int val){
if(st<=dr){
int mijl= (st+dr)/2;
if(s[mijl]<val) return cauta(mijl+1,dr,val);
else return cauta(st,mijl-1,val);
}
else return st;
}
int main()
{
int i,poz;
f1>>n;
for(i=1;i<=n;i++){
f1>>a[i];
poz=cauta(1,l,a[i]);
s[poz]=a[i];
lung[i]=poz;
if(poz>l) l=poz;
}
f2<<l<<"\n";
for(i=n;(i>=1)&&(l>0);i--){
if(lung[i]==l){
nrsol++;
sol[nrsol]=a[i];
l--;
}
}
for(i=nrsol;i>=1;i--){
f2<<sol[i]<<' ';
}
return 0;
}