uva 10534 Wavio Sequence

来源:互联网 发布:增值税发票税控盘软件 编辑:程序博客网 时间:2024/05/16 04:01
#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;}

0 0
原创粉丝点击