记录编号 |
590032 |
评测结果 |
WWWWWWWWWW |
题目名称 |
机场改建 |
最终得分 |
0 |
用户昵称 |
wzh0425 |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
0.454 s |
提交时间 |
2024-07-09 14:26:11 |
内存使用 |
6.50 MiB |
显示代码纯文本
#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","w",stdout);
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;
}