Pagini recente » Istoria paginii runda/simulare1_luka/clasament | Clasament c_001 | Profil Djok | Cod sursa (job #209570) | Cod sursa (job #202228)
Cod sursa(job #202228)
#include <stdio.h>
#define N 100001
long pnivmax[N],sir[N],tata[N] ;
int main ()
{long n,i,j,nmax;
FILE *fin=fopen("scmax.in","r");
fscanf(fin,"%ld",&n) ;
for (i=1;i<=n;i++)
{fscanf(fin,"%ld",&sir[i]);}
pnivmax[1]=1;nmax=1;
tata[1]=0 ;
for (i=2;i<=n;i++)
{for (j=nmax;j>=1;j--)
{if(sir[pnivmax[j]]<sir[i])
{tata[i]=pnivmax[j];
pnivmax[j+1]=i;
if(j+1>nmax)
{nmax=j+1;}
break;
}
}
if(j==0)
{pnivmax[1]=i;tata[i]=0;
}
}
for (j=nmax,i=pnivmax[nmax];i;i=tata[i],j--)
{pnivmax[j]=sir[i];}
FILE *fout=fopen("scmax.out","w");
fprintf(fout,"%ld\n",nmax);
for (i=1;i<=nmax;i++)
{fprintf(fout,"%ld ",pnivmax[i]);
}
return 0;
}