Pagini recente » Cod sursa (job #1288735) | Cod sursa (job #1150698) | Cod sursa (job #2669048) | Cod sursa (job #2103937) | Cod sursa (job #979009)
Cod sursa(job #979009)
#include <fstream>
#include <algorithm>
using namespace std;
int v[100010], poz[100010], st[100010], a[100010], lst;
int bin (int x)
{
int a = 1, b = lst, m;
while (1)
{
if (a <= b)
{
m = (a + b) / 2;
if (st[m] == x) return m;
else if (st[m] < x) a = m + 1;
else b = m - 1;
}
else return a;
}
}
int main ()
{
ifstream f ("scmax.in");
ofstream g ("scmax.out");
int n;
f >> n;
for (int i = 1; i <= n; i++)
{
f >> v[i];
int b = bin (v[i]);
st[b] = v[i];
poz[i] = b;
lst = max (lst, b);
}
g << lst << '\n';
int k = 0;
for (int i = n; lst; i--)
if (poz[i] == lst) a[++k] = v[i], lst--;
for (int i = k; i; i--)
g << a[i] << " ";
g << '\n';
return 0;
}