Pagini recente » Cod sursa (job #2976323) | Cod sursa (job #2999522) | Cod sursa (job #612266) | Cod sursa (job #2598505) | Cod sursa (job #2988389)
#include <fstream>
using namespace std;
const int infinit = 2e9 + 1;
const int MAX = 100001;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n, i, nr, s, d, m, vm[MAX], p, a[MAX], lmax;
// vm[i] = valoarea minima cu care se termina un subsir strict crescator de lungime i
int main() {
fin >> n;
for (i = 1; i <= n; i++)
fin >> a[i];
for (i = 1; i <= n; i++)
vm[i] = infinit;
for (i = 1; i <= n; i++) {
d = i + 1;
while (vm[d] > a[i])
d--;
vm[d] = a[i];
}
lmax = n;
while (vm[lmax] == infinit)
lmax--;
fout << lmax;
}