比赛 |
round 1『缺混麻酱伞鹊役』 |
评测结果 |
AAEEAEEAEEAEEEAAWWWW |
题目名称 |
HS 的 Eula |
最终得分 |
35 |
用户昵称 |
wdsjl |
运行时间 |
1.965 s |
代码语言 |
C++ |
内存使用 |
3.32 MiB |
提交时间 |
2024-11-21 09:42:02 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 510;
ll ps[N],vis[N],n,m,zuo,you,res,zuo_n,you_n;
int main(){
freopen("Eulalover.in","r",stdin);
freopen("Eulalover.out","w",stdout);
int fg=1;
int p0s;
scanf("%lld%lld",&n,&m);
for(int i=1;i<=n;i++){
scanf("%lld",&ps[i]);
if(ps[i]==0){
fg=0;
p0s=i;
res+=m;
}
}
if(fg){
ps[++n]=0;
}
sort(ps+1,ps+1+n);
for(int i=1;i<=n;i++){
// cout<<ps[i]<<"www";
// cout<<"RR"<<zuo<<" "<<you<<endl;
if(ps[i]<0){
zuo+=(m-(0-ps[i]));
zuo_n++;
}
if(ps[i]==0&&fg){
p0s=i;
vis[i]++;
// cout<<vis[i]<<"FFF"<<endl;
}
if(ps[i]>0){
you_n++;
you+=(m-ps[i]);
}
}
int t=0;
// for(int i=1;i<=n;i++)cout<<vis[i]<<" ";
// cout<<endl;
// cout<<zuo<<" "<<zuo_n<<" "<<you<<" "<<you_n<<endl;
for(int i=1;i<n;i++){
if(t>=m)break;
else if(zuo_n==0&&you_n==0)break;
if(zuo>=you){
// cout<<"左"<<endl;
int rr=p0s-1;
// cout<<vis[rr]<<"rr"<<endl;
while(vis[rr]&&rr>0)rr--;
t+=(ps[p0s]-ps[rr]);
you-=(ps[p0s]-ps[rr])*2*you_n;
p0s=rr;
vis[p0s]++;
res+=m-t;
zuo-=m-t;
zuo_n--;
}else if(zuo<you){
// cout<<"右"<<endl;
int rr=p0s+1;
// cout<<vis[rr]<<"rr"<<endl;
while(vis[rr]&&rr<n)rr++;
t+=(ps[rr]-ps[p0s]);
zuo-=(ps[rr]-ps[p0s])*2*zuo_n;
p0s=rr;
vis[p0s]++;
res+=m-t;
you-=m-t;
you_n--;
}
// cout<<ps[p0s]<<" "<<t<<" "<<res<<endl;
// cout<<"now"<<zuo<<" "<<zuo_n<<" "<<you<<" "<<you_n<<endl;
}
printf("%lld",res);
return 0;
}