Holiday of Equality
Holiday of Equality
لدينا مصفوفة \(A\) تحتوي على \(N\) من الأعداد الصحيحة. يمكنك زيادة أي عنصر بمقدار \(1\) أي عدد من المرات. أوجد الحد الأدنى لإجمالي عدد الزيادات المطلوبة لجعل جميع العناصر متساوية.
Solution
لجعل جميع العناصر متساوية بأقل عدد ممكن من الزيادات، نحتاج إلى رفع كل العناصر إلى القيمة العظمى في المصفوفة. ولفعل ذلك، سنكتب دالة تحسب القيمة العظمى بين قيمتين.
int max_function(int x, int y) {
if (x > y) return x;
else return y;
}بعد ذلك، سنحسب القيمة العظمى في المصفوفة \(max(A_1, \dots, A_n)\) بالطريقة التالية.
int n;
cin >> n;
int a[n];
for (int i = 0; i < n; i++) {
cin >> a[i];
}
int max_value = a[0];
for (int i = 0; i < n; i++) {
max_value = max_function(max_value, a[i]);
}لكل عنصر \(i\)، كمية الزيادة المطلوبة هي \(max(A_1, \dots, A_n) - A_i\).
بجمع هذه القيم لجميع العناصر نحصل على الحد الأدنى لإجمالي عدد الزيادات المطلوبة.
int coins = 0;
for (int i = 0; i < n; i++) {
coins += max_value - a[i];
}
cout << coins;