मान लीजिए हमारे पास n तत्वों वाली एक सरणी A है, और दो अन्य सरणी k और x हैं। i-वां कार्य पूरा करने में A[i] समय लगता है। दी गई A गैर-घटते क्रम में सॉर्टेड है। अमल अधिकतम k कार्य लेता है और उनमें से प्रत्येक को A[i] के बजाय x यूनिट समय में करता है। (x < सभी A[i] का न्यूनतम)। हमें अमल के कार्य पूरा करने के लिए आवश्यक न्यूनतम समय ज्ञात करना है। अमल एक साथ एक से अधिक कार्य नहीं कर सकता।
इसलिए, यदि इनपुट A = [3, 6, 7, 10]; k = 2; x = 2 है, तो आउटपुट 13 होगा, क्योंकि सबसे अच्छा विकल्प तीसरे और चौथे कार्य को करना होगा, प्रत्येक पर x = 2 समय खर्च करके A[2] और A[3] के बजाय। तब उत्तर 3 + 6 + 2 + 2 = 13 है।
चरण
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
x := k * x n := size of A for initialize i := 0, when i < n - k, update (increase i by 1), do: t := A[i] x := x + t return x
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
#include <bits/stdc++.h> using namespace std; int solve(vector<int> A, int k, int x){ x = k * x; int n = A.size(); for (int i = 0; i < n - k; i++){ int t = A[i]; x += t; } return x; } int main(){ vector<int> A = { 3, 6, 7, 10 }; int k = 2; int x = 2; cout << solve(A, k, x) << endl; }इनपुट
{ 3, 6, 7, 10 }, 2, 2आउटपुट
13