Pagini recente » Cod sursa (job #406023) | Cod sursa (job #350699) | Cod sursa (job #3263838) | Cod sursa (job #1593093) | Cod sursa (job #2909357)
#include <iostream>
#include <fstream>
#define NR_OF_ELEMENTS 100005
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
void Read(int &n, int a[])
{
int i;
fin >> n;
for(i = 0; i < n ; ++ i)
fin >> a[i];
}
void Solve(int n, int a[])
{
int i, j, sol = 0, pz = 0;
for(i = n - 2; i >= 0 ; -- i)
for(j = i + 1; j < n; ++ j)
if(a[i] < a[j])
if(dp[i] < dp[j] + 1)
{
dp[i] = dp[j] + 1;
t[i] = j;
}
for(i = 0; i < n; ++ i)
if(sol < dp[i])
{
sol = dp[i];
pz = i;
}
fout << sol + 1 << '\n';
i = pz;
while(i)
{
fout << a[i] << ' ';
i = t[i];
}
fout << '\n';
}
int main()
{
int a[NR_OF_ELEMENTS], dp[NR_OF_ELEMENTS],t[NR_OF_ELEMENTS], n;
Read(n, a);
Solve(n, a);
return 0;
}