竞赛讨论区 > 不懂就问为啥E看了好久没看出问题来
头像
hhu_21_包涵
发布于 2022-06-15 15:12
+ 关注

不懂就问为啥E看了好久没看出问题来

#include "iostream"
#define ll long long


int main(){
    int t;
    scanf("%d",&t);
    while (t--){
        ll a[100005];
        ll w[100005];
        int n;
        int pos;
        ll ans = 0x3f3f3f3f3f3f3f3f;
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%lld",&a[i]);
            if(!a[i]){
                pos=i;
            }
        }
        if(n==1){
            printf("No Solution\n");
        }
        //left
        for(int i=pos-1;i>=1;i--){
            if(i!=pos-1){
                w[i] = std::max(w[i+1]-a[i],a[i]+1);
            } else{
                w[i] = a[i]+1;
            }
        }
        //right
        for(int i= pos+1;i<=n;i++){
            if(i!=pos+1){
                w[i] = std::max(w[i-1]-a[i],a[i]+1);
            } else{
                w[i]=a[i]+1;
            }
        }
        for(int i=1;i<=n;i++){
            if(i==pos){
                continue;
            } else{
                ans = std::min(ans,w[i]);
            }
        }
        printf("%lld\n",ans);
    }
    return 0;
}

就是这样,看了眼其实应该和题解里写的几乎一样,但是为什么哇了捏QAQ

全部评论

(0) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐