Pagini recente » Cod sursa (job #2150757) | Cod sursa (job #941869) | Cod sursa (job #2969130) | Cod sursa (job #3132145) | Cod sursa (job #1127320)
#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;}