不懂就问为啥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

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务