Pagini recente » Cod sursa (job #2920449) | Cod sursa (job #2495521) | Cod sursa (job #1997059) | Cod sursa (job #1463933) | Cod sursa (job #693201)
Cod sursa(job #693201)
#include<stdio.h>
#include<iostream>
using namespace std;
#define mN 100001
#define filein "scmax.in"
#define fileout "scmax.out"
int A[mN], N, lMax[mN], pRev[mN], maxV, maxP;
int step1()
{
FILE* fin = fopen(filein, "r");
fscanf(fin, "%d", &N);
for(int i = 0; i < N; i++)
fscanf(fin, "%d", &A[i]);
fclose(fin);
return 0;
}
int step2()
{
for(int i = N - 1; i > 0; i--)
for(int j = i + 1; j <= N; j++)
if(A[i] < A[j])
if(lMax[i] < lMax[j] + 1) {
lMax[i] = lMax[j] + 1,
pRev[i] = j;
if(maxV < lMax[i])
maxV = lMax[i],
maxP = i; }
return 0;
}
int step3()
{
FILE* fout = fopen(fileout, "w");
fprintf(fout, "%d\n", maxV + 1);
for(int i = maxP, j = 0; j != maxV + 1; i = pRev[i], j++)
fprintf(fout, "%d ", A[i]);
fclose(fout);
return 0;
}
int main()
{
step1();
step2();
step3();
return 0;
}