Pagini recente » Clasament mission_impossible | Cod sursa (job #889881) | Cod sursa (job #1808725) | Cod sursa (job #2442809) | Cod sursa (job #858675)
Cod sursa(job #858675)
#include <cstdio>
using namespace std;
int n,sir[100005],lg[100005];
int ind,max1;
void citire(){
scanf("%d",&n);
for(int i=0;i<n;++i)
scanf("%d",&sir[i]);
}
void rezolvare(){
int max,poz;
for(int i=n-1;i>=0;--i){
lg[i]=1;
max=0;poz=-1;
for(int j=i+1;j<n;++j)
if(lg[j]>max && sir[j]>sir[i]){
max=lg[j];
poz=j;
}
lg[i]=1+max;
if(lg[i]>max1){
max1=lg[i];
ind=i;
}
}
printf("%d\n",max1);
}
void afisare(){
printf("%d ",sir[ind]);
for(int i=ind+1;i<n;++i)
if(lg[i]==max1-1 && sir[i]>sir[ind]){
max1=lg[i];
ind=i;
printf("%d ",sir[i]);
}
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
citire();
rezolvare();
afisare();
return 0;
}