Pagini recente » Cod sursa (job #2834255) | Cod sursa (job #2600395) | Cod sursa (job #2435947) | Cod sursa (job #307859) | Cod sursa (job #413713)
Cod sursa(job #413713)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
int n,m,i,j,max,maxglobal;
int *v,*best,*s;
FILE *f = fopen("scmax.in","r");
FILE *g = fopen("scmax.out","w");
fscanf(f,"%d\n",&n);
v = (int*)malloc(n*sizeof(int));
best = (int*)malloc(n*sizeof(int));
for(i=0;i<n;i++)
fscanf(f,"%d ",&v[i]);
maxglobal = 1;
for(i = 0; i<n ; i++){
best[i] = 1;
max = 0;
for(j=0;j<i;j++){
if(v[j]<v[i] && best[j]>max)
max = best[j];
}
best[i] = best[i] + max;
if(best[i] > maxglobal)
maxglobal = best[i];
}
m = maxglobal;
s = (int*)malloc(m*sizeof(int));
for(i = n-1; i>=0; i--)
if(best[i] == maxglobal){
s[maxglobal - 1] = v[i];
maxglobal--;
}
fprintf(g,"%d\n",m);
for(i=0;i<m;i++)
fprintf(g,"%d ",s[i]);
fprintf(g,"\n");
fclose(f);
fclose(g);
free(v);
free(best);
free(s);
return 0;
}