1 条题解

  • 0
    @ 2026-9-30 12:54:44

    C++ :

    
    #include <cstdio>
    int main(){
        int n; if(scanf("%d",&n)!=1) return 0;
        int h[1005];
        for(int i=0;i<n;i++)scanf("%d",&h[i]);
        long long best=-1;
        // 枚举最终高度下界 L,所有山调到 [L, L+17]
        for(int L=-20;L<=100;L++){
            long long c=0;
            for(int i=0;i<n;i++){
                if(h[i]<L)c+=(long long)(L-h[i])*(L-h[i]);
                else if(h[i]>L+17)c+=(long long)(h[i]-L-17)*(h[i]-L-17);
            }
            if(best<0||c<best)best=c;
        }
        printf("%lld\n", best);
        return 0;
    }
    
    
    • 1

    信息

    ID
    2782
    时间
    1000ms
    内存
    256MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者