Pagini recente » Cod sursa (job #3170669) | Cod sursa (job #811708) | Cod sursa (job #2299834) | Cod sursa (job #2326621) | Cod sursa (job #1533763)
#include <iostream>
#include <fstream>
using namespace std;
const int Nmax = 100005;
int v[Nmax], N, iMax = N, Max = -1;
int best[Nmax], succ[Nmax];
void read()
{
ifstream f("scmax.in");
f >> N;
for(int i = 1; i <= N; i ++)
{
f >> v[i];
}
f.close();
}
void scmax()
{
best[N] = 1;
succ[N] = 0;
for(int i = N-1; i >= 1; i --)
{
best[i] = 1;
succ[i] = 0;
for(int j = i+1; j <= N; j ++)
{
if((best[i] < best[j]+1) && (v[i] < v[j]))
{
best[i] = best[j]+1;
succ[i] = j;
if(best[i] > Max)
{
Max = best[i];
iMax = i;
}
}
}
}
}
void print()
{
ofstream g("scmax.out");
g << Max << "\n";
int x = iMax;
do
{
g << v[x] << " ";
x = succ[x];
}while(x != 0);
g.close();
}
int main()
{
read();
scmax();
print();
return 0;
}