কম্পিউটার টিউটোরিয়াল

C++ প্রোগ্রাম: টাওয়ারগুলোর ন্যূনতম অসুন্দরতা (Ugliness) নির্ণয়

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(vector A) { 
    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।

  1. C++-এ কার্টেসিয়ান কোঅর্ডিনেট পয়েন্টগুলোর মিনিমাম কানেকশন খরচ বের করার প্রোগ্রাম

  2. C++-এ বাইনারি ট্রি-র ন্যূনতম সম আয়ত্ত লেভেল বের করার প্রোগ্রাম

  3. C++ প্রোগ্রাম: LCM (লঘুতম সাধারণ গুণিতক) নির্ণয়

  4. C++ প্রোগ্রাম: GCD (মহত্তম সাধারণ ভাজক) নির্ণয়