#include <cstdio>
#include <cstring>
#include <cctype>
#include <cstdlib>
#include <queue>
#include <stack>
#include <cmath>
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
#define maxn 10000 + 10
#define ll long long
#include <ctime>
int n, a[maxn], in[maxn], de[maxn], b[maxn];
void insum()
{
int len_in = 1;
in[0] = 1;
b[0] = a[0];
for(int i = 1; i < n; ++i)
{
if(a[i] > b[len_in-1])
b[len_in++] = a[i];
else
{
int t = lower_bound(b, b+len_in, a[i]) - b;
b[t] = a[i];
}
in[i] = len_in;
}
return;
}
void desum()
{
int len_de = 1;
de[n-1] = 1;
b[0] = a[n-1];
for(int i = n-2; i >= 0; --i)
{
if(a[i] > b[len_de-1])
b[len_de++] = a[i];
else
{
int t = lower_bound(b, b+len_de, a[i]) - b;
b[t] = a[i];
}
de[i] = len_de;
}
return;
}
int main()
{
while(scanf("%d", &n) != EOF)
{
for(int i = 0; i < n; ++i)
scanf("%d", &a[i]);
memset(b, 0, sizeof(b));
insum();
memset(b, 0, sizeof(b));
desum();
int ans = 0;
// for(int i = 0; i < n; ++i)
// printf("%d ", in[i]);
// printf("\n");
// for(int i = 0; i < n; ++i)
// printf("%d ", de[i]);
// printf("\n");
for(int i = 0; i < n; ++i)
ans = max(ans, 2*min(in[i], de[i])-1);
printf("%d\n", ans);
}
return 0;
}
uva 10534 Wavio Sequence
最新推荐文章于 2024-07-27 07:00:00 发布