समस्या विवरण
यहां हम एक समस्या देखेंगे, मान लीजिए एक ऐरे दिया गया है। n तत्व हैं। एक और मान S भी दिया गया है। हमें ऐरे में एक तत्व K ढूंढना है, जैसे कि, यदि सभी तत्व जो K से बड़े हैं, उन्हें K के बराबर बना दिया जाए, तो अंतिम ऐरे के सभी तत्वों का योग S के बराबर हो जाए। यदि यह संभव नहीं है, तो -1 वापस करें।
उदाहरण
तत्व: {12, 6, 3, 7, 8}, योग मान = 15
आउटपुट: 3
अंतिम ऐरे: {3, 3, 3, 3, 3}, ऐरे तत्वों का योग S = 15
एल्गोरिदम
getVal(arr, n, S)
शुरुआत
arr को बढ़ते क्रम में सॉर्ट करें
sum := 0
i को 0 से n-1 तक लूप
यदि sum + (arr[i] * (n - i)), S के समान है, तो
arr[i] वापस करें
अंत यदि
sum := sum + arr[i]
अंत लूप
-1 वापस करें
अंत
C++ प्रोग्राम उदाहरण
#include <iostream>
#include <algorithm>
using namespace std;
int getVal(int arr[], int n, int S) {
sort(arr, arr + n);
int sum = 0;
for (int i = 0; i < n; i++) {
if (sum + (arr[i] * (n - i)) == S)
return arr[i];
sum += arr[i];
}
return -1;
}
int main() {
int S = 15;
int arr[] = { 12, 3, 6, 7, 8 };
int n = sizeof(arr) / sizeof(arr[0]);
cout << getVal(arr, n, S);
}
आउटपुट
3