Pagini recente » Cod sursa (job #1856135) | Cod sursa (job #639836) | Cod sursa (job #2112949) | Cod sursa (job #1799251) | Cod sursa (job #2907092)
#include<stdio.h>
#include <iostream>
#include <fstream>
#include <vector>
//https://infoarena.ro/problema/scmax
int main()
{
std::vector<int> arr;
std::vector<int> len;
std::vector<int> prev;
std::ifstream fin("scmax.in");
std::ofstream fout("scmax.out");
int n, len_max, ind_max, ind;
fin >> n;
arr.resize(n);
len.resize(n);
prev.resize(n);
for (int i = 0; i < n; i++)
fin >> arr[i];
for (int i = n - 1; i >= 0; i--)
{
len[i] = 1;
len_max = 0;
ind = -1;
for (int j = i + 1; j < n; j++)
{
if (arr[i] < arr[j] && len[j] > len_max) {
len_max = len[j];
ind = j;
}
}
if (ind != -1) len[i] += len[ind];
prev[i] = ind;
}
len_max = 0;
ind_max = -1;
for (int i = 0; i < n; i++)
{
if (len[i] > len_max) {
len_max = len[i];
ind_max = i;
}
}
fout << len_max << '\n';
printf("%d\n", len_max);
while (ind_max != -1)
{
fout << arr[ind_max] << ' ';
printf("%d ", arr[ind_max]);
ind_max = prev[ind_max];
}
}