Pagini recente » Cod sursa (job #1974517) | Cod sursa (job #2777189) | Cod sursa (job #1243635) | Cod sursa (job #301964) | Cod sursa (job #777556)
Cod sursa(job #777556)
#include <stdio.h>
#include <stdlib.h>
#define NMAX 100000
void scmax(int *v, int n)
{
int sol[100000];
memset(sol, 0, n * sizeof(int));
int global_max, global_index_max;
sol[0] = 1;
global_max = sol[0];
global_index_max = 0;
int i;
for (i = 1; i < n; i++)
{
int j;
int max = 0;
for (j = 0; j < i; j++)
{
if (v[j] < v[i] && sol[j] > max)
{
max = sol[j];
}
}
max++;
sol[i] = max;
if (global_max < max)
{
global_max = max;
global_index_max = i;
}
}
FILE *f = fopen("scmax.out", "w");
fprintf(f, "%d\n", global_max);
sol[global_index_max] = -1;
for (i = global_index_max - 1; i >= 0; --i)
{
if (global_max == 0)
{
break;
}
if (global_max - 1 == sol[i])
{
global_max--;
sol[i] = -1;
}
}
for (i = 0 ; i < n; i++)
{
if (sol[i] == -1)
fprintf(f, "%d ", v[i]);
}
}
int main()
{
int n, v[NMAX];
FILE *f = fopen("scmax.in", "r");
fscanf(f, "%d", &n);
int i;
for (i = 0; i < n; i++)
{
fscanf(f, "%i", v + i);
}
fclose(f);
scmax(v, n);
return 0;
}