NC219243. uu与糖果
描述
输入描述
每组输入的第一行为n(1 <= n <= 2e6), k(1 <= k <= 1e9), h(0 <= h <= 1e9).
接下来一行为n个数字,代表每堆糖果的数量ai(1 <= ai <= 1e9)
输出描述
输出一个整数,代表uu能得到最多糖果的数量。
示例1
输入:
3 9 1 1 3 5
输出:
28
示例2
输入:
3 4 2 1 5 2
输出:
14
C++(g++ 7.5.0) 解法, 执行用时: 749ms, 内存消耗: 556K, 提交时间: 2023-03-28 20:35:02
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main() { ll n,k,h; cin>>n>>k>>h; ll a,ans=0; for(ll i=1;i<=n;i++) { cin>>a; if(h==0) ans+=a; else if(a>k) ans+=a; else ans+=a+(k-a)/h*h; } cout<<ans+h; }
C(clang11) 解法, 执行用时: 246ms, 内存消耗: 376K, 提交时间: 2021-03-07 13:42:39
#include<stdio.h> #include<string.h> #define ll long long int main() { int n,k,h,a; scanf("%d%d%d",&n,&k,&h); ll ans=h; for(int i=0;i<n;i++) { scanf("%d",&a); if(a>k||h==0) ans+=a; else ans+=a+(k-a)/h*h; } printf("%lld",ans); }
Python3(3.9) 解法, 执行用时: 784ms, 内存消耗: 187752K, 提交时间: 2021-03-08 13:13:34
n, k, h = list(map(int, input().split())) a = list(map(int, input().split())) ans = sum(a) if h==0: print(ans) else: for i in a: s=k-i if s>0: ans+=(s//h)*h print(ans+h)
C++(clang++11) 解法, 执行用时: 527ms, 内存消耗: 15212K, 提交时间: 2021-04-19 19:54:38
#include<bits/stdc++.h> using namespace std; int main() { int n,k,h,a; cin>>n>>k>>h; long long sum=0; while(n--) { cin>>a; sum+=a; if(h&&k>a){ sum+=(k-a)/h*h; } } cout<<sum+h; }