Pagini recente » Cod sursa (job #473679) | Cod sursa (job #156892) | Cod sursa (job #2234868) | Cod sursa (job #175060) | Cod sursa (job #1010683)
#include <stdio.h>
#define MAX(a,b) (a > b ? a : b)
int main()
{
FILE* fr = fopen("scmax.in", "r");
FILE* fw = fopen("scmax.out", "w");
int n;
fscanf(fr, "%d", &n);
int *A = new int[n];
for(int i = 0; i < n; i++)
fscanf(fr, "%d", A + i);
int *B = new int[n],
*C = new int[n];
for(int i = 0; i < n; i++)
{
B[i] = 1;
C[i] = -1;
}
int mA = -1, mB = 0;
for(int i = n-1; i > 0; i--)
{
for(int j = i - 1; j >= 0; j--)
{
if(A[j] < A[i])
{
if(B[j] < 1 + B[i])
{
B[j] = 1 + B[i];
C[j] = i;
if(B[j] > mA)
{
mA = B[j];
mB = j;
}
}
}
}
}
fprintf(fw, "%d\n", mA);
for(int i = mB; i != -1; i = C[i])
fprintf(fw, "%d ", A[i]);
return 0;
}