Cod sursa(job #2457809)
| Utilizator | Data | 18 septembrie 2019 19:24:15 | |
|---|---|---|---|
| Problema | Subsir crescator maximal | Scor | 65 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.57 kb |
#include <bits/stdc++.h>
using namespace std;
int main() {
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n, x, l, b[100005], i, bn, k, aux;
fin >> n;
l = b[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 k = aux - 1;
}
b[l] = x;
bn = max(bn, l);
}
(fout << bn).put('\n');
for(i = 1; i <= bn; ++i)
(fout << b[i]).put(' ');
}