Pagini recente » Cod sursa (job #1011046) | Borderou de evaluare (job #202387) | Cod sursa (job #2705516) | Cod sursa (job #2763511) | Cod sursa (job #1800185)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("scmax.in");
ofstream out ("scmax.out");
int N, arr[100001], L[100001], Max;
void read_input ()
{
in >> N ;
for(int i = 1 ; i <= N ; ++ i)
in >> arr[i];
}
void solve ()
{
int poz, i , last;
L[N] = 1;
for(int i = N - 1 ; i >= 1 ; -- i)
{
Max = 0;
for(int j = i ; j <= N ; ++ j)
{
if(arr[i] < arr[j] && L[j] > Max)
Max = L[j];
}
L[i]= Max + 1;
}
Max = 0;
for(int i = 1 ; i <= N ; ++ i)
{
if(L[i] >= Max)
Max = L[i], poz = i;
}
out << Max << endl;
out << arr[poz] <<" " ;
-- Max;
last = poz;
for(i = poz + 1 ; i <= N ; ++ i)
{
if(L[i] == Max && last < arr[i])
out << arr[i] << " " , last = arr[i], -- Max;
}
}
int main()
{
read_input ();
solve ();
return 0;
}