मान लीजिए कि हमारे पास n तत्वों के साथ एक सरणी A है। विचार करें कि एक पंक्ति में n ब्लॉक टावर हैं। Ith टावर की ऊंचाई A[i] है। एक ही दिन में, हम ऑपरेशन कर सकते हैं:दो इंडेक्स i और j (i !=j) चुनें और टावर i से j पर वापस जाएं। यह A[i] को 1 से घटाएगा और A[j] को 1 से बढ़ाएगा। इमारतों की कुरूपता अधिकतम (A) - मिनट (A) है। हमें न्यूनतम संभव कुरूपता का पता लगाना होगा जिसे हम प्राप्त कर सकते हैं।
इसलिए, यदि इनपुट A =[1, 2, 3, 1, 5] जैसा है, तो आउटपुट 1 होगा, क्योंकि हम i=2 और j=0 के लिए तीन ऑपरेशन कर सकते हैं, अब नई सरणी होगी [ 2,2,2,1,5], तो i =4 और j =3 के लिए, सरणी [2,2,2,2,4] होगी, और i =4 और j =2 के लिए, सरणी है [ 2,2,3,2,3].
कदम
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
sum := 0 x := 0 n := size of A for initialize i := 0, when i < n, update (increase i by 1), do: sum := sum + A[i] if sum mod n is same as 0, then: return 0 return 1
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; int solve(vector<int> A) { int sum = 0, x = 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<int> A = { 1, 2, 3, 1, 5 }; cout << solve(A) << endl; }
इनपुट
{ 1, 2, 3, 1, 5 }
आउटपुट
1