Pagini recente » Cod sursa (job #3313843) | Cod sursa (job #560819) | Cod sursa (job #3280856) | Cod sursa (job #342307) | Cod sursa (job #1268564)
#include <stdio.h>
FILE *fin, *fout;
struct tip
{
int a;
int b;
} *dyn;
long int n, max, *arr;
void afisare(int a)
{
if(dyn[a].b != -1) afisare(dyn[a].b);
fprintf(fout, "%ld ", arr[a]);
}
int main()
{
fin = fopen("scmax.in", "r");
fout = fopen("scmax.out", "w");
int n, max;
fscanf(fin, "%d", &n);
arr = new long int[n];
dyn = new tip[n];
for(int i =0; i< n; i++) fscanf(fin, "%ld", &arr[i]);
dyn[0].a = 1;dyn[0].b = -1;
for(int i =1; i< n; i++)
{
dyn[i].a = 1;
dyn[i].b = -1;
for(int j = i-1; j>=0; j--)
{
if(arr[i] <= arr[j]) continue;
if(dyn[j].a +1 > dyn[i].a)
{
dyn[i].a = dyn[j].a + 1;
dyn[i].b = j;
}
}
}
fprintf(fout, "%d\n", dyn[n-1].a);
afisare(n-1);
fclose(fin);
fclose(fout);
return 0;
}