ログインしてください。
公式
A - 棒の長さ揃え / Make the Stick Lengths Equal 解説
by
A - 棒の長さ揃え / Make the Stick Lengths Equal 解説
by
kyopro_friends
操作回数を少なくするには、棒はできるだけ長いままにするのが得です。
よって、最終的な棒の長さは、条件を満たすことができる最大の長さである \(T:=\min(A_1,\dots,A_N)\) にするのが最適であり、求める答えは \(\sum_{i=1}^{N}(A_i-T)\) となります。
計算量は \(O(N)\) です。言語によってはオーバーフローに注意してください。
以下の実装例では \((\sum_{i=1}^N A_i)-NT\) と計算しています。
実装例 (C++)
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
vector<int> a(n);
for(int i=0; i<n; i++) cin >> a[i];
long long sum = 0;
for(int i=0; i<n; i++){
sum += a[i];
}
long long min = *min_element(a.begin(), a.end());
cout << sum - n * min << endl;
}
実装例 (Python)
N = int(input())
A = list(map(int, input().split()))
print(sum(A) - N * min(A))
投稿日時:
最終更新:
