Pagini recente » Cod sursa (job #278376) | Cod sursa (job #111963) | Cod sursa (job #1419870) | Cod sursa (job #161395) | Cod sursa (job #2738606)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n, a[100005], len[100005], lmax, pre[100005];
void print(int i) {
if(pre[i]) print(pre[i]);
fout << a[i] << ' ';
}
int main() {
fin >> n;
for(int i = 1; i <= n; i++)
fin >> a[i];
for(int i = 1; i <= n ; i++) {
int l = 0, r = lmax, ans = -1;
while(l <= r) {
int m = l+(r-l)/2;
if(a[len[m]] < a[i]) {
ans = m;
l = m+1;
} else {
r = m-1;
}
}
pre[i] = len[ans];
len[ans+1] = i;
lmax = max(lmax, ans+1);
}
fout << lmax << '\n';
print(len[lmax]);
}