Pagini recente » Cod sursa (job #2132802) | Cod sursa (job #1365383) | Cod sursa (job #2576060) | Cod sursa (job #2141159) | Cod sursa (job #2365020)
#include <iostream>
#include <fstream>
#include <vector>
std::ifstream f("scmax.in");
std::ofstream g("scmax.out");
#define NMAX 100005
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]<<" ";
for(int i = 1; i <= n; i++)
cout<<dp[i]<<" ";
return 0;
}