NC254287. 小红的数组操作(easy version)
描述
输入描述
第一行输入五个正整数,代表数组的大小,其余几个变量如题目描述所示。
第二行输入个正整数,代表数组的元素。
输出描述
如果无解,请输出-1。
否则输出一个整数,代表最小的总代价。
示例1
输入:
3 3 1 5 6 2 3 4
输出:
0
说明:
平均数为3,是整数,不需要任何操作。示例2
输入:
4 4 1 7 3 2 3 2 2
输出:
12
说明:
操作3次:分别对第一个、第三个和第四个元素加1即可。pypy3 解法, 执行用时: 149ms, 内存消耗: 29664K, 提交时间: 2023-07-07 21:39:12
n,p,x,q,y = map(int,input().split()) a = map(int,input().split()) t = sum(a) if t % n == 0: print(0) else: ans = float('inf') i = 0 while i <= n: ans = min(ans,i * q + p * ((n - (t - i * y) % n)%n)) i += 1 print(ans)
C++(clang++ 11.0.1) 解法, 执行用时: 49ms, 内存消耗: 456K, 提交时间: 2023-07-08 14:21:17
#include<iostream> using namespace std; long n,p,q,y,i,a,s,mi=2e12; int main(){ cin>>n>>p>>a>>q>>y; for(i=0;i<n;i++)cin>>a,s+=a; for(i=0;i<1575;i++) mi=min(mi,(n-(s-i*y)%n)%n*p+q*i); cout<<mi; }
C++(g++ 7.5.0) 解法, 执行用时: 49ms, 内存消耗: 448K, 提交时间: 2023-07-08 23:20:33
#include<iostream> using namespace std; long n,p,q,y,i,j,a,s,mi=2e12; int main(){ cin>>n>>p>>a>>q>>y; for(;j<n;j++)cin>>a,s+=a; for(;i<1575;i++) mi=min(mi,(n-(s-i*y)%n)%n*p+q*i); cout<<mi; }