Pagini recente » Cod sursa (job #3228901) | Cod sursa (job #1371945) | Cod sursa (job #1964704) | Cod sursa (job #144393) | Cod sursa (job #2250600)
#include <bits/stdc++.h>
using namespace std;
int values[100001];
int dp[100001], position[100001], sol[100001], lastEl[100001];
int final, size1 = 0;
int binarSearch(int x, int n){
int position = 0;
for (int power = 20; power >= 0 ; power --){
if (position + (1 << power) <= n && dp[position + (1 << power)] < x){
position += (1 << power);
}
}
return position;
}
int main() {
ifstream f("scmax.in");
ofstream g("scmax.out");
int n;
f >> n;
for (int i = 1; i <= n; i++){
f >> values[i];
}
int bestRight = 0;
for (int i = 1; i <= n; i++){
final = binarSearch(values[i], bestRight);
dp[final + 1] = values[i];
position[final + 1] = i;
lastEl[i] = position[final];
bestRight = max(bestRight, final + 1);
}
g << bestRight;
return 0;
}