Pagini recente » Cod sursa (job #2475331) | Cod sursa (job #1776248) | Cod sursa (job #3183744) | Rating Rusu Eliza (ElizaRusu) | Cod sursa (job #1657435)
#include <iostream>
#include <cstdio>
#include <cstring>
#define NMAX 100005
using namespace std;
int vec[NMAX];
int a[NMAX];
int n;
int maxim;
bool done = false;
void afiseaza(int k)
{
printf("%d\n", k);
for (int i=1; i<=k; i++)
{
printf("%d ", a[vec[i]]);
}
}
bool crescator(int k)
{
if (k == 1)
return true;
int nr = 0;
for (int i=1; i<k; i++)
{
if (a[vec[i]] < a[vec[i+1]])
nr++;
}
if (nr == k-1)
return true;
return false;
}
void bt(int k=1)
{
for (int i=vec[k-1]+1; i<=n; i++)
{
vec[k] = i;
if (crescator(k))
{
if (k > maxim)
maxim = k;
}
bt(k+1);
}
}
void bt2(int k = 1)
{
if (crescator(k) && k == maxim)
{
afiseaza(k);
done = true;
return;
}
for (int i=vec[k-1]+1; i<=n && !done; i++)
{
vec[k] = i;
bt2(k+1);
}
}
void Solve()
{
bt();
memset(vec, 0, sizeof(vec));
bt2();
}
void Read()
{
scanf("%d\n", &n);
for(int i=1; i<=n; i++)
{
scanf("%d ", &a[i]);
}
}
int main()
{
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
Read();
Solve();
return 0;
}