Pagini recente » Cod sursa (job #620570) | Cod sursa (job #473499) | Cod sursa (job #1929085) | Cod sursa (job #644487) | Cod sursa (job #1347895)
#include <fstream>
#define NMax 100010
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
int v[NMax], t[NMax], p[NMax];
int main()
{
int i, j, n, q, k = 0, maxim = 0;
in >> n;
in >> v[1];
t[1] = 1;
for(i = 2; i <= n; i ++)
{
in >> v[i];
t[i] = 1;
for(j = 1; j < i; j ++)
if(v[j] < v[i])
t[i] = max( t[i], t[j] + 1);
if(maxim<t[i])
{
maxim = t[i];
q = i;
}
}
for(i = q; t[i] > 1;)
{
p[t[i]] = v[i];
for(j = i - 1; j >= 1; j --)
{
if(t[j] == t[i] - 1 && v[j] < v[i])
{
i = j;
break;
}
}
}
p[t[i]] = v[i];
out << maxim << endl;
for(i = 1; i <= maxim; i ++)
out << p[i] << " ";
return 0;
}