Pagini recente » Cod sursa (job #1283019) | Cod sursa (job #1911967) | Rating Dudas Daniel (biskis) | Cod sursa (job #992049) | Cod sursa (job #2039845)
#include <iostream>
#include <cstdio>
#define MAXN 100000
using namespace std;
FILE *fin=fopen("scmax.in","r"),*fout=fopen("scmax.out","w");
int n,MAXLS,pf;
struct help{
int pp,val,ls;
}v[MAXN];
int main(){
fscanf(fin,"%d",&n);
fscanf(fin,"%d",&v[0].val);
v[0].ls=1;
v[0].pp=-1;
pf=1;
MAXLS=1;
for(int i=1;i<n;i++){
fscanf(fin,"%d",&v[i].val);
int maxls=0;
bool ok=false;
for(int j=0;j<=i;j++){
if(v[j].val<v[i].val and v[j].ls>maxls){
v[i].pp=j;
v[i].ls=v[j].ls+1;
maxls=v[j].ls;
ok=true;
}
}
if(ok==false){
v[i].pp=-1;
v[i].ls=1;
}
if(v[i].ls>MAXLS){
pf=i;
MAXLS=v[i].ls;
}
}
int rez[MAXN];
for(int i=MAXLS,j=pf;i>=1;i--){
rez[i]=v[j].val;
j=v[j].pp;
}
fprintf(fout,"%d\n",MAXLS);
for(int i=1;i<=MAXLS;i++){
fprintf(fout,"%d ",rez[i]);
}
return 0;
}