Pagini recente » Cod sursa (job #1304230) | Cod sursa (job #2441799) | Cod sursa (job #333651) | Cod sursa (job #1616238) | Cod sursa (job #1207042)
#include<stdio.h>
FILE *in, *out;
int N, A[100005], PRE[100005], BEST[100005], finalIndex;
void read()
{
in = fopen("scmax.in", "rt");
out = fopen("scmax.out", "wt");
fscanf(in, "%d", &N);
for (int i = 0; i < N; i++)
fscanf(in, "%d", &A[i]);
}
void process()
{
for (int i = 0; i < N; i++)
{
BEST[i] = 1;
int maxLocal = 0;
for (int j = 0; j < i; j++)
{
if (A[j] < A[i] && BEST[j] > maxLocal)
{
BEST[i] = 1 + BEST[j];
PRE[i] = j;
maxLocal = BEST[j];
}
}
}
int max = 0;
for (int i = 0; i < N; i++)
{
if (max < BEST[i])
{
max = BEST[i];
finalIndex = i;
}
}
fprintf(out, "%d\n", max);
}
void write(int index)
{
if (PRE[index] > 0)
write(PRE[index]);
fprintf(out, "%d ", A[index]);
}
int main()
{
read();
process();
write(finalIndex);
return 0;
}