Pagini recente » Cod sursa (job #1711523) | Cod sursa (job #2719712) | Cod sursa (job #669362) | Cod sursa (job #2519865) | Cod sursa (job #2717389)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int lng[100005], a[100005], pre[100005] ,n, lmx;
void print(int pos) {
if(pos == 0) return;
print(pre[pos]);
fout << a[pos] << ' ';
}
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 = lmx, ans = -1;
while(l <= r) {
int m = l+(r-l)/2;
if(a[lng[m]] < a[i]) {
ans = m;
l = m+1;
} else {
r = m-1;
}
}
lng[ans+1] = i;
lmx = max(lmx, ans+1);
pre[i] = lng[ans];
}
fout << lmx << '\n';
print(lng[lmx]);
}