Pagini recente » Cod sursa (job #823319) | Cod sursa (job #1317135) | Cod sursa (job #1458438) | Cod sursa (job #1434578) | Cod sursa (job #1127115)
#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){
int i;
for(i=n; i>=1; i--)
if(p[i]==k){if(k>1) cautareinp(k-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);
fout<<"\n";
fin.close(); fout.close();
return 0;}