Pagini recente » Cod sursa (job #451611) | Cod sursa (job #759699) | Cod sursa (job #2744376) | Cod sursa (job #2218499) | Cod sursa (job #2628313)
#include <iostream>
#include <algorithm>
#include <vector>
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
void Lungime(vector<int>& nums)
{
int n = nums.size();
vector<int> dp(n);
vector<int> AnsNr(n);
int ans = 0;
for (int i = 0; i < n; i++)
{
vector<int> SirActual;
int MaxSmaller = 0;
for (int j = 0; j < i; j++)
{
if (nums[j] < nums[i] && dp[j] > MaxSmaller)
{
MaxSmaller = dp[j];
SirActual.push_back(nums[j]);
}
}
SirActual.push_back(nums[i]);
dp[i] = MaxSmaller + 1;
if (dp[i] > ans)
{
ans = dp[i];
AnsNr = SirActual;
}
}
fout << ans << '\n';
for (int x : AnsNr)
{
fout << x << ' ';
}
}
int main()
{
int n;
fin >> n;
vector<int> nr(n);
for (int& x : nr)
{
fin >> x;
}
Lungime(nr);
}
/*
v : 24 12 15 15 19
dp : 1 1 2 2 3
*/