Pagini recente » Cod sursa (job #2626187) | Cod sursa (job #459449) | Cod sursa (job #1642817) | Cod sursa (job #927385) | Cod sursa (job #872510)
Cod sursa(job #872510)
#include <stdio.h>
//Constante
const int sz = (int)1e5+1;
//Functii
void construct(int pos);
//Variabile
FILE *in,*out;
int elements, maxim=1, lastPosition;
int values[sz], best[sz], previous[sz];
int main()
{
in=fopen("scmax.in","rt");
out=fopen("scmax.out","wt");
fscanf(in,"%d",&elements);
for(int i=1; i<=elements; ++i)
fscanf(in,"%d",&values[i]);
for(int i=2; i<=elements; ++i)
for(int j=1; j<i; ++j)
{
if(values[j] < values[i] && best[i] < best[j]+1)
{
best[i] = best[j]+1;
previous[i] = j;
if(best[i] > maxim)
{
maxim = best[i];
lastPosition = i;
}
}
}
fprintf(out,"%d\n",maxim+1);
construct(lastPosition);
fclose(in);
fclose(out);
return 0;
}
void construct(int pos)
{
if(previous[pos] != 0)
construct(previous[pos]);
fprintf(out,"%d ",values[pos]);
}