Pagini recente » Cod sursa (job #1521426) | Cod sursa (job #534759) | Cod sursa (job #2209139) | Cod sursa (job #2722753) | Cod sursa (job #1010650)
#include <iostream>
#include <fstream>
std::ifstream fin("scmax.in");
std::ofstream fout("scmax.out");
long n, a[100001], l[100001];
void citire()
{
fin>>n;
for(int i = 0; i < n; i++)
{
fin>>a[i];
l[i] = 1;
}
}
void rezolvare()
{
long maximAbs = 0, ind = 0;
for(int i = n - 2; i >= 0; i--)
{
long maxim = 0;
for(int j = i + 1; j < n; j++)
{
if(a[i] < a[j])
{
if(maxim < l[j])
{
maxim = l[j];
}
}
}
l[i] = maxim + 1;
if(l[i] > maximAbs)
{
maximAbs = l[i];
ind = i;
}
}
long lastNR = a[ind];
for(int i = ind; i < n; i++)
{
if(l[i] == maximAbs && a[i] >= lastNR)
{
fout<<a[i]<<' ';
maximAbs--;
lastNR = a[i];
}
// std::cout<<l[i]<<' ';
}
}
int main()
{
citire();
rezolvare();
return 0;
}