Pagini recente » infoarena - comunitate informatica, concursuri de programare | infoarena - comunitate informatica, concursuri de programare | Cod sursa (job #3294472) | Cod sursa (job #2456392) | Cod sursa (job #3210370)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
const int NMAX = 100001;
int v[NMAX];
int lmax[NMAX];
int n;
int scmax(int k){
if(lmax[k] != -1)
{
return lmax[k];
}
int best_lmax = 1;
for(int i = k + 1; i <= n; i++)
{
if(v[i] > v[k])
{
int lmax_from_i = scmax(i);
if(lmax_from_i + 1 > best_lmax)
{
best_lmax = lmax_from_i + 1;
}
}
}
lmax[k] = best_lmax;
return lmax[k];
}
int main()
{
f >> n;
for(int i = 1; i <= n; i++){
f >> v[i];
lmax[i] = -1;
}
int best = 1;
for(int i = 1; i <= n; i++){
int lmax_for_i = scmax(i);
if(lmax_for_i > best){
best = lmax_for_i;
}
}
g << best << "\n";
return 0;
}