Pagini recente » Cod sursa (job #290707) | Cod sursa (job #522667) | Cod sursa (job #488597) | Cod sursa (job #2967137) | Cod sursa (job #87683)
Cod sursa(job #87683)
//infoarena subsir2
// http://infoarena.ro/problema/subsir2
//O(n^2)
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#define INF 0x7FFFFFFF
using namespace std;
#define MAX 5000
int v[MAX], N, Lmin, L[MAX];
void calc()
{
L[N-1] = 1;
for (int i = N-2; i>=0; i--)
{
int vmin = INF, l = INF;
for (int j = i+1; j<N; j++)
{
if (v[j] >= v[i] && v[j] < vmin && L[j] < l)
l = L[j];
if (v[j] >=v[i]) vmin = min(vmin, v[j]);
};
if (l==INF) l =0;
L[i] = l + 1;
};
};
int main()
{
freopen("subsir2.in", "r", stdin);
freopen("subsir2.out", "w", stdout);
scanf("%d\n", &N);
for (int i = 0; i<N; i++)
scanf("%d", &v[i]);
calc();
for (int i=0; i<N; i++)
Lmin = max(Lmin, L[i]);
printf("%d\n", Lmin);
fclose(stdin);
fclose(stdout);
return 0;
};