Pagini recente » Cod sursa (job #1426757) | Cod sursa (job #1417008) | Cod sursa (job #3272748) | Cod sursa (job #1661968) | Cod sursa (job #1696407)
#include <stdio.h>
#include <stdlib.h>
int v[100];
int maxim[100];
int urmatorul[100];
int main(){
int n, i, j;;
FILE *fin, *fout;
fin=fopen("scmax.in", "r");
fout=fopen("scmax.out", "w");
fscanf(fin, "%d", &n);
for(i=0; i<n; i++)
fscanf(fin, "%d", &v[i]);
maxim[n-1]=1;
urmatorul[n-1]=-1;
for(i=n-2; i>=0; i--){
maxim[i]=1;
urmatorul[i]=-1;
for(j=i+1; j<n; j++)
if(v[j]>v[i] && maxim[j]>=maxim[i]){
maxim[i]=maxim[j]+1;
urmatorul[i]=j;
}
}
j=0;
for(i=1; i<n; i++)
if(maxim[i]>maxim[j]) j=i;
fprintf(fout, "%d\n", maxim[j]);
while(j!=-1){
fprintf(fout, "%d ", v[j]);
j=urmatorul[j];
}
fclose(fin);
fclose(fout);
return 0;
}