Pagini recente » Cod sursa (job #603818) | Cod sursa (job #2921119) | Cod sursa (job #642569) | Cod sursa (job #2130718) | Cod sursa (job #1147401)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
const int inf = 2 * 1000 * 1000 * 1000 + 1;
const int MaxN = 100 * 1000 + 5;
int n;
int a[MaxN], v[MaxN], dp[MaxN], ls[MaxN];
int binsrc(int val) {
int i = v[0], cnt = 1 << 16;
for (; cnt; cnt >>= 1)
if (i - cnt && v[i - cnt] >= val)
i -= cnt;
return i;
}
int main() {
fin >> n;
for (int i = 1; i <= n; ++i)
fin >> a[i];
int res = 0;
for (int i = 1; i <= n; ++i) {
if (v[v[0]] != inf)
v[++v[0]] = inf;
int pos = binsrc(a[i]);
v[pos] = a[i];
dp[i] = pos + 1;
res = max(res, dp[i]);
}
fout << res - 1 << '\n';
fin.close(); fout.close(); return 0;
}