Pagini recente » Cod sursa (job #780089) | Cod sursa (job #2885758) | Cod sursa (job #552272) | Cod sursa (job #1363628) | Cod sursa (job #2364986)
#include <iostream>
#include <fstream>
#include <vector>
std::ifstream f("scmax.in");
std::ofstream g("scmax.out");
#define NMAX 100000
using namespace std;
int n, a[NMAX], maxxGlobal = 1;
int dp[NMAX];
vector<int> sol;
int main()
{
f>>n;
for(int i = 1; i <= n; i++)
{
f>>a[i];
dp[i] = 1;
}
for(int i = 2; i <= n; i++)
for(int j = 1; j <= i; j++)
if(a[j] < a[i])
{
dp[i] = max(dp[j] + 1, dp[i]);
maxxGlobal = max(maxxGlobal, dp[i]);
}
g<<maxxGlobal<<'\n';
for(int i = n; i >= 1; i--)
if(dp[i] == maxxGlobal)
{
sol.push_back(a[i]);
maxxGlobal--;
}
for(int i = sol.size() - 1; i >= 0; i--)
g<<sol[i]<<" ";
return 0;
}