Cod sursa(job #824150)

Utilizator zamfiMihai Zamfirescu zamfi Data 25 noiembrie 2012 22:08:25
Problema Subsir crescator maximal Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.69 kb
#include <stdio.h>
#include <stdlib.h>
int main(){int*a,*b,*c,*d;int i,e=0,f=0,n,g,h,j,k;FILE*in,*out;in=fopen("scmax.in","r");fscanf(in,"%d",&n);b=(int*)calloc(n,sizeof(int));for(i=0;i<n;i++){fscanf(in,"%d",b+i);}fclose(in);a=(int*)calloc(n,sizeof(int));c=(int*)calloc(n,sizeof(int));d=(int*)calloc(n,sizeof(int));c[0]=b[0];d[0]=0;for(i=1;i<n;i++){h=0,j=e;while(h!=j){k=(h+j)/ 2;if(b[i]>c[k]){h=k+1;}else{j=k;}}if(b[i]<=c[h]){c[h]=b[i];d[i]=h;}else{c[++j]=b[i];d[i]=j;}if(d[i]>e){e=d[i];}}g=e+1;for(i=n-1;i>=0;i--){if(d[i]==e){a[e]=b[i];e--;}if(f<0){break;}}free(c);free(d);out=fopen("scmax.out","w");fprintf(out,"%d\n",g);for(i=0;i<g;i++){fprintf(out,"%d ",a[i]);}fclose(out);free(b);free(a);return 0;}