Pagini recente » Cod sursa (job #3235909) | Cod sursa (job #2859298) | Cod sursa (job #3199357) | Cod sursa (job #1319584) | Cod sursa (job #1400711)
#include <math.h>
#include <algorithm>
#include <fstream>
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
int n, v[100003], sm[100003], aux[100003];
void citire()
{
int i;
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
}
void sol()
{
sm[n] = 1;
aux[0] = 2000000001;
aux[1] = v[n];
int i,l = 1,val;
for(i = n - 1; i; i--)
{
int t=l;
while(v[i] >= aux[t])
t--;
sm[i] = t+1;
aux[ sm[i] ] = max(v[i],aux[sm[i]]);
if(l < sm[i])
l = sm[i];
}
val = 0;
cout << l << '\n';
for(i = 1; i <= n; i++)
if(sm[i] == l && v[i] > val)
{
cout << v[i] << ' ';
l--;
val = v[i];
}}
int main()
{
citire();
sol();
return 0;
}