社区讨论
为什么只有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 条回复,欢迎继续交流。
正在加载回复...