Pagini recente » Cod sursa (job #33525) | Cod sursa (job #2212636) | Cod sursa (job #1769538) | Cod sursa (job #1175292) | Cod sursa (job #2147012)
#include <fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
const int nmax = 100005;
int n, k, a[nmax], i, j, v[nmax];
int val[nmax], poz[nmax];
int cb(int x) {
int st = 1, dr = k, mij;
while (st <= dr) {
mij = (st+dr)/2;
if (val[mij] >= x)
dr = mij-1;
else st = mij+1;
}
return st;
}
int main() {
f >> n;
for (i = 1; i <= n; i++) {
f >> a[i];
j = cb(a[i]);
val[j] = a[i];
poz[i] = j;
if (j > k) k++;
}
g << k << '\n';
j = 0;
for (i = n; i >= 1 && k; i--)
if (poz[i] == k)
v[++j] = a[i], k--;
while (j > 0)
g << v[j--] << ' ';
return 0;
}