nটি টাওয়ারের উচ্চতা A[i] দিয়ে দেওয়া আছে। একদিনে একটি অপারেশন: দুটি সূচক i, j (i≠j) নিয়ে i-র থেকে j-তে ১ ইউনিট সরান (A[i]--, A[j]++)। অসুন্দরতা = max(A) - min(A)। ন্যূনতম অসুন্দরতা বের করতে হবে।
সমাধানের ধাপসমূহ
মোট যোগফল sum। যদি sum n-দিয়ে বিভাজ্য হয়, সব টাওয়ার সমান উচ্চতায় আনা যায় (অসুন্দরতা ০)। অন্যথায় ন্যূনতম অসুন্দরতা ১।
উদাহরণ
#include <bits/stdc++.h> using namespace std; int solve(vectorA) { int sum = 0; int n = A.size(); for (int i = 0; i < n; i++) sum += A[i]; if (sum % n == 0) return 0; return 1; } int main() { vector A = {1, 2, 3, 1, 5}; cout << solve(A) << endl; return 0; }
ইনপুট
{1, 2, 3, 1, 5}
আউটপুট
1
ব্যাখ্যা
যোগফল = 12, n = 5। 12%5 ≠ 0, তাই ন্যূনতম অসুন্দরতা ১। অপারেশন দিয়ে [2,2,3,2,3] বানানো যায়, max=3, min=2, diff=1।