Pagini recente » Cod sursa (job #1404081) | Cod sursa (job #3122165) | Cod sursa (job #440263) | Cod sursa (job #2408472) | Cod sursa (job #3177136)
#include <iostream>
#include <queue>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
int x[100000],nr[100000];
queue <int>q;
int main()
{
int n,m=0;
cin>>n;
for (int i=0;i<n;i++)
{
cin>>x[i];
nr[i]=1;
for (int j=i-1;j>=0;j--)
if (x[j]<x[i])
{
nr[i]=max(nr[i],nr[j]);
if (nr[i]>m)
m=nr[i];
}
}
for (int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
if (x[i]<x[j])
{
nr[i]=nr[i]+nr[j];
if (nr[i]>m)
m=nr[i];
}
int e=0;
for (int i=0;i<n;i++)
{
if (nr[i]==m)
{
if (q.empty())
q.push(x[i]);
for (int j=i+1;j<n;j++)
if (x[i]<x[j] && x[j]!=e)
{
q.push(x[j]);
e=x[j];
}
}
}
out<<m-1<<'\n';
while (!q.empty())
{
out<<q.front()<<" ";
q.pop();
}
return 0;
}