Pagini recente » Cod sursa (job #2085425) | Cod sursa (job #2951387) | Cod sursa (job #371305) | Cod sursa (job #2204034) | Cod sursa (job #2989673)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
int n, x, nr;
int a[200005];
int dp[200005];
int best[200005];
int CB(int x) {
int st = 1, dr = nr, mid, p = nr;
while (st <= dr) {
mid = (st + dr) / 2;
if (x <= dp[mid]) {
p = mid;
dr = mid - 1;
}
else st = mid + 1;
}
return p;
}
int main()
{
fin >> n;
for (int i = 1; i <= n; i++)
fin >> a[i];
best[1] = 1;
dp[1] = a[1];
dp[0] = 0;
nr = 1;
for (int i = 2; i <= n; i++) {
int poz = CB(a[i]);
best[i] = poz + 1;
dp[poz + 1] = i;
if (nr < poz + 1)
nr = poz + 1;
}
fout << nr << "\n";
return 0;
}