社区讨论

为什么只有96分?求dalao解答!!!

站务版参与者 8已保存回复 12

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
12 条
当前快照
1 份
快照标识符
@mi7cz364
此快照首次捕获于
2025/11/20 19:39
4 个月前
此快照最后确认于
2025/11/20 22:06
4 个月前
查看原帖
#include<bits/stdc++.h> #define ll long long #define rt register ll using namespace std; inline long long read() { ll date=0,w=1;char c=0; while(c<'0'||c>'9'){if(c=='-')w=-1;c=getchar();} while(c>='0'&&c<='9'){date=date10+c-'0';c=getchar();} return datew; } inline void write(ll x) { if(x<0) putchar('-'),x=-x; if(x>9)write(x/10); putchar(x%10+'0'); } ll n,m,p1,p2,s1,s2,sum1,sum2,a[220000001],mid,h; int main() { n=read();for(rt i=1;i<=n;++i) a[i]=read(); m=read(),p1=read(),s1=read(),s2=read();a[p1]+=s1; for(rt i=1;i<=m-1;++i) sum1+=a[i](m-i); for(rt i=m+1;i<=n;++i) sum2+=a[i](i-m);mid=max(sum1,sum2)-min(sum1,sum2);p2=m; if(sum1==sum2){printf("%d",m);return 0;} if(m==2&&sum1<sum2){printf("1");return 0;} if(m==n-1&&sum1>sum2){printf("%d",n);return 0;} if(sum1>sum2) for(rt i=m+1;i<=n;++i) { h=sum2+s2*(i-m); if(abs(h-sum1)<mid) mid=abs(h-sum1),p2=i; } else if(sum1<sum2) for(rt i=1;i<=m-1;++i) { h=sum1+s2*(m-i); if(abs(h-sum2)<mid) mid=abs(h-sum2),p2=i; }write(p2); return 0; }

回复

12 条回复,欢迎继续交流。

正在加载回复...