比赛 2024暑假C班集训9 评测结果 RRRRRRRRRR
题目名称 机场改建 最终得分 0
用户昵称 wzh0425 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2024-07-09 10:55:04
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int T,n,d,x[200005],maxs=INT_MIN,mins=INT_MAX,yd;
int main(){
    freopen("airport.in","r",stdin);
    freopen("airport.out","r",stdin);
    scanf("%d",&T);
    while (T--){
    scanf("%d%d",&n,&d);
    maxs=INT_MIN,mins=INT_MAX,yd=0;
    for (int i=1;i<=n;i++){
        scanf("%d",&x[i]);
        if (i==1){
            maxs=max(maxs,x[i]);
            mins=min(mins,x[i]);
            printf("%d ",yd);
        }else{
            if (abs(x[i]-mins)<d&&abs(x[i]-maxs)<d){
                int a=mins-d;
                int aj=abs(x[i]-a);
                int b=mins+d;
                int bj=abs(x[i]-b);
                int c=maxs-d;
                int cj=abs(x[i]-c);
                int d=maxs+d;
                int dj=abs(x[i]-d);
                if (aj<=bj&&aj<=cj&&aj<=dj) mins=a,yd+=aj;
                else if (dj<=aj&&dj<=bj&&dj<=cj) maxs=d,yd+=dj;
                else if (bj<=aj&&bj<=cj&&bj<=dj) yd+=bj;
                else yd+=cj;
            }else{
                maxs=max(maxs,x[i]);
                mins=min(mins,x[i]);
            }
            printf("%d ",yd);
        }
    }
    cout<<endl;
    }
    return 0;
}