Pagini recente » Cod sursa (job #2481697) | Cod sursa (job #217855) | Cod sursa (job #1429617) | Cod sursa (job #2800087) | Cod sursa (job #3212813)
#include <fstream>
#include <vector>
#define ll long long
using namespace std;
const int NMAX = 100000;
int a[NMAX + 1];
int sol[NMAX + 1];
signed main()
{
ifstream cin("scmax.in");
ofstream cout("scmax.out");
int n, i;
cin >> n;
for (i = 1; i <= n; i++)
cin >> a[i];
int dim = 0;
for (i = 1; i <= n; i++)
{
int st = 1, dr = dim, poz = 0;
while (st <= dr)
{
int med = ((st + dr) >> 1);
if (sol[med] < a[i])
{
poz = med;
st = med + 1;
}
else
dr = med - 1;
}
if (poz + 1 > dim)
sol[++dim] = a[i];
else
sol[poz + 1] = a[i];
}
cout << dim << "\n";
for (i = 1; i <= dim; i++)
cout << sol[i] << " ";
}