Pagini recente » Cod sursa (job #491746) | Cod sursa (job #2447721) | Cod sursa (job #1512829) | Cod sursa (job #745896) | Cod sursa (job #1837017)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
vector <int> a,s;
void read()
{
int n;
cin >> n;
a.resize(n);
for (int i=0; i<a.size(); i++)
cin >> a[i];
}
void write()
{
cout << s.size() << '\n';
for (int i=s.size()-1; i>=0; i--)
cout << s[i] << ' ';
}
void magic(vector <int> &x)
{
vector <int> y(a.size());
fill(y.begin()+1,y.end(),0);
y[0]=1;
x=y;
}
void solve()
{
vector <int> x;
magic(x);
for (int i=1,j,mx,m; i<x.size(); x[i]=1+mx,i++)
for (j=0,mx=0; j<i; j++)
{
if (a[i]>a[j] && x[j]>mx) mx=x[j];
}
int m=0;
for (int i=1; i<x.size(); i++)
if (x[i]>x[m]) m=i;
s.push_back(a[m]);
for (int i=m-1,u=m; i>=0; i--)
if (x[i]+1==x[u])
{
s.push_back(a[i]);
u=i;
}
}
main()
{
read();
solve();
write();
}