Pagini recente » Cod sursa (job #312250) | Cod sursa (job #202489) | Cod sursa (job #1813853) | Borderou de evaluare (job #2637499) | Cod sursa (job #1522403)
#include <stdio.h>
#include <stdlib.h>
int val[100001],l[100001],best[100001];
int max,pmax;
FILE *g;
void citire()
{
int i,n;
FILE *f=fopen("scmax.in","r");
fscanf(f,"%d",&n);
for(i=0; i<n; i++)
{
fscanf(f,"%d",&val[i]);
l[i]=1;
best[i]=-1;
}
fclose(f);
}
void rezolvare()
{
int i,j,n;
for(i=0; i<n; i++)
for(j=0; j<i; j++)
if(val[j] < val[i] && (l[j]+1 > l[i]))
{
l[i]=l[j]+1;
best[i]=j;
}
pmax=0;
max=l[0];
for(i=1; i<n; i++)
if(l[i]>max)
{
max=l[i];
pmax=i;
}
fprintf(g,"%d\n",max);
}
void afisare(int i)
{
if(i!=-1)
{
afisare(best[i]);
fprintf(g,"%d ",val[i]);
}
}
int main()
{
g=fopen("scmax.out","w");
citire();
rezolvare();
afisare(pmax);
fprintf(g,"\n");
fclose(g);
return 0;
}