Pagini recente » Istoria paginii runda/eusebiu_oji_2012_cls11-12 | Cod sursa (job #172312) | Cod sursa (job #250964) | Cod sursa (job #175412) | Cod sursa (job #2100353)
#include <iostream>
#include <fstream>
#define mx 100005
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int v[mx], d[mx], t[mx], n, Lm, k;
void Subseq(int x)
{
if(x != 0)
{
Subseq(t[x]);
g << v[x] << " ";
}
}
int main()
{
d[1] = 1; k = 1;
f >> n;
for(int i = 1; i <= n; ++i)
f >> v[i];
for(int i = 2; i <= n; ++i)
{
int p, step;
for(step = 1; step < k; step <<= 1);
for(p = 0; step; step >>= 1)
if(p+step <= k && v[d[p+step]] < v[i])
p += step;
++p;
if(p > k) k++;
d[p] = i;
t[i] = d[p-1];
}
g << k << "\n";
Subseq(d[k]);
}