1 条题解
-
2
#include<bits/stdc++.h> #define int long long using namespace std; int n;//兵营数 int c[100005];//c[i] i号兵营的工兵数 int m,p1,s1,s2; signed main() { cin>>n; for(int i=1;i<=n;i++) cin>>c[i]; cin>>m>>p1>>s1>>s2; c[p1]+=s1;//直接把p1号兵营加上s1个人 //计算没有s2个人的情况 int left,right; left=right=0; for(int j=1;j<=m-1;j++){ left+=c[j]*(m-j); } for(int j=m+1;j<=n;j++){ right+=c[j]*(j-m); } //考虑把s2个人放在哪个兵营最合适 int minn=abs(left-right),mini=m; //初始认为放在m号兵营最合适 for(int i=1;i<=n;i++) { //考虑把s2个人放在i号兵营 int newLeft = left; int newRight = right; if(i<m) newLeft += (m-i)*s2; else newRight += (i-m)*s2; //找到了答案 if(abs(newLeft-newRight)<minn){ minn=abs(newLeft-newRight); mini=i; } } cout<<mini<<endl; return 0; }
- 1
信息
- ID
- 116
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 56
- 已通过
- 23
- 上传者