Pagini recente » Cod sursa (job #1735111) | Cod sursa (job #1897373) | Cod sursa (job #2630691) | Cod sursa (job #1818099) | Cod sursa (job #1127136)
#include <iostream>
#include <fstream>
using namespace std;
long v[100001], q[100001], n, l=0, p[100001];
ifstream fin("scmax.in"); ofstream fout("scmax.out");
void cautareinp(long k, long i){
for(i; i>=1; i--)
if(p[i]==k){if(k>1) cautareinp(k-1, i-1);
fout<<v[i]<<" "; break;};}
int main(){
int i, j, ok;
fin>>n;
for(i=1; i<=n; i++){fin>>v[i]; ok=0;
for(j=1; j<=l; j++)
if(q[j]>=v[i]){q[j]=v[i];
ok=1; p[i]=j;
break;}
if(!ok)q[++l]=v[i]; p[i]=l;}
fout<<l<<"\n";
cautareinp(l, n);
fout<<"\n";
fin.close(); fout.close();
return 0;}