Pagini recente » Cod sursa (job #2134929) | Cod sursa (job #1027241) | Cod sursa (job #2367285) | Cod sursa (job #1816649) | Cod sursa (job #1009978)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *v, *a, i, j, n, max, pozmax;
FILE *f=fopen("scmax.in","r"), *g=fopen("scmax.out","w");
fscanf(f,"%d", &n);
v = (int*)malloc(sizeof(int)*n);
a = (int*)malloc(sizeof(int)*n);
for (i = 0; i < n; i++)
{
fscanf(f,"%d", &v[i]);
a[i] = 0;
}
a[n - 1] = 1;
for (i = n - 2; i >= 0; i--)
{
max = 0;
for (j = i + 1; j < n; j++)
{
if ((v[i] < v[j]) && (a[j] > max))
{
max = a[j];
}
}
a[i] = max + 1;
}
max = 0;
for (i = 0; i < n; i++)
{
if (a[i] > max)
{
max = a[i];
pozmax = i;
}
}
fprintf(g,"%d\n%d ", max, v[pozmax]);
max--;
i = pozmax+1;
while (max)
{
if ((v[pozmax] < v[i]) && (a[i] == max))
{
fprintf(g,"%d ", v[i]);
max--;
pozmax = i;
}
i++;
}
return 0;
}