Pagini recente » Cod sursa (job #2949991) | Cod sursa (job #1274614) | Cod sursa (job #1397976) | Cod sursa (job #2007945) | Cod sursa (job #1528170)
#include <fstream>
#define NM 100001
using namespace std;
ifstream InF ("scmax.in");
ofstream OutF ("scmax.out");
unsigned a[NM];
unsigned n;
unsigned b[NM];
unsigned i, k, t, maxim;
void scan ();
void solve ();
void print ();
int main ()
{
scan ();
solve ();
print ();
return 0;
}
void scan ()
{
InF >> n;
for (i=1; i<=n; i++)
InF >> a[i];
}
void solve ()
{
b[n] = 1;
for (k=n-1; k>=1; k--)
{
maxim = 0;
for (i=k+1; i<=n; i++)
if (a[i] > a[k] && b[i] > maxim)
maxim = b[i];
b[k] = maxim++;
}
maxim = b[i];
t = 1;
for (k=1; k<=n; k++)
if (b[k] > maxim)
{
maxim = b[k];
t = k;
}
}
void print ()
{
OutF << maxim << "\n";
for (i=t; i<=n; i++)
if (a[i]>=a[t] && b[i]==maxim)
{
OutF << a[i] << " ";
maxim--;
}
}