zoukankan      html  css  js  c++  java
  • poj 3347

    #include   <cstring>
    #include   <iostream>
    #include   <cstdlib>
    #include   <iomanip>
    #include   <cassert>
    #include    <bitset>
    #include    <cctype>
    #include    <cstdio>
    #include    <string>
    #include    <vector>
    #include     <stack>
    #include     <cmath>
    #include     <queue>
    #include      <list>
    #include       <map>
    #include       <set>
    using namespace std;
    const int maxn=1e2+10;
    int main()
    {
        while(1)
        {
            int n; scanf("%d",&n); if(n==0) break;
            int pa[maxn];
            int a[maxn];
            for(int i=1;i<=n;i++)  pa[i]=0;
            for(int i=1;i<=n;i++)  scanf("%d",&a[i]);
            for(int i=1;i<=n;i++)
            {
                if(i==1)
                {
                    pa[i]=a[i];
                }
                else
                {
                    for(int j=1;j<i;j++)
                    {
                        int x=min(a[i],a[j]);
                        pa[i]=max(pa[i],pa[j]+x*2);
                    }
                    pa[i]=max(pa[i],a[i]);
                }
            }
            vector<int> vs;
            for(int i=1;i<=n;i++)
            {
                int lll=0;
                int rrr=0;
                for(int j=1;j<i;j++)    if(a[j]>a[i]) lll=max(lll,a[j]+a[i]-(pa[i]-pa[j]));
                for(int j=i+1;j<=n;j++) if(a[j]>a[i]) rrr=max(rrr,a[j]+a[i]-(pa[j]-pa[i]));
                //cout<<lll<<"  "<<rrr<<endl;
                if(lll+rrr<a[i]*2) vs.push_back(i);
            }
            for(int i=0;i<vs.size();i++)
            {
                printf("%d ",vs[i]);
            }
            printf("
    ");
        }
        return 0;
    }
  • 相关阅读:
    tuple-1
    禅语-1
    综述的写作技巧-1
    皆大欢喜组合
    类和对象-3
    双棍练习
    CodeBlocks开发环境使用-1
    类和对象-2
    类和对象-1
    13-归并排序-分治策略应用于排序
  • 原文地址:https://www.cnblogs.com/Andromeda-Galaxy/p/10658543.html
Copyright © 2011-2022 走看看