Pagini recente » Cod sursa (job #500010) | Cod sursa (job #2988827) | Cod sursa (job #1394377) | Cod sursa (job #607353) | Cod sursa (job #483253)
Cod sursa(job #483253)
#include <stdio.h>
#include <math.h>
long n, din[100010], dex[100010], val, i, max;
long BSearch (long num) {
long ll = 0, rl = dex[0], sol = 0;
while (ll < rl) {
long mid = (ll + rl) / 2 + 1;
if (dex[mid] >= num) {
rl = mid - 1;
} else {
ll = mid;
sol = mid;
}
}
return sol;
}
int main() {
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
scanf("%ld", &n);
din[0] = 1;
din[1] = 1;
for (i = 1; i <= n; ++i) {
scanf("%ld", &val);
if (i == 1) {
dex[0] = 1;
dex[1] = val;
continue;
}
din[i] = BSearch(val) + 1;
if (dex[din[i]] == 0) { ++dex[0]; dex[din[i]] = 2000000010; }
if (dex[din[i]] > val) {
dex[din[i]] = val;
}
}
max = 0;
for (i = 1; i <= n; ++i) {
if (max < din[i]) max = din[i];
}
printf("%ld", max);
return 0;
}