Pagini recente » Cod sursa (job #2504214) | Cod sursa (job #1520321) | Cod sursa (job #2457821)
#include <bits/stdc++.h>
using namespace std;
int main() {
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n, x, l, b[100005], cb[100005], i, bn, k, aux;
fin >> n;
l = b[0] = cb[0] = bn = 0;
for(i = 0; i < n; ++i) {
fin >> x;
l = 0; k = bn;
while(l <= k) {
aux = (l + k) / 2;
if(b[aux] < x) l = aux + 1;
else if(b[aux] > x) k = aux - 1;
else break;
}
if(l <= k) continue;
b[l] = x;
if(bn < l) {
bn = l;
do cb[l] = b[l]; while(--l);
}
}
(fout << bn).put('\n');
for(i = 1; i <= bn; ++i)
(fout << cb[i]).put(' ');
}