Cod sursa(job #2943605)
Utilizator | Costin Alexandru alexcostin | Data | 21 noiembrie 2022 12:28:35 |
---|---|---|---|
Problema | Subsir crescator maximal | Scor | 45 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.8 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
long long n, nr, a[100001], l[100001];
int main()
{
f >> n;
for(int i = 1; i <= n; i++)
f >> a[i];
nr = 1;
l[nr] = a[1];
for (int i = 2; i <= n; i++) {
if (a[i] >= l[nr]) {
l[++nr] = a[i];
}
else {
long long st = 1, dr = nr, poz = nr + 1, mij;
while (st <= dr) {
mij = (st + dr) / 2;
if (l[mij] > a[i]) {
poz = mij;
dr = mij - 1;
}
else
st = mij + 1;
}
l[poz] = a[i];
}
}
g << nr;
f.close();
g.close();
return 0;
}