मान लीजिए कि हमारे पास n तत्वों के साथ एक सरणी A है, और दूसरी संख्या H. H एक दुश्मन का स्वास्थ्य है। हमारे पास n हथियार हैं और ith हथियार की हानिकारक शक्ति A [i] है। दुश्मन को मारने के लिए विभिन्न हथियारों का इस्तेमाल किया जा सकता है। हम एक ही हथियार को लगातार दो बार इस्तेमाल नहीं कर सकते। हमें कम से कम गिनना होगा कि दुश्मन को मारने के लिए हम कितनी बार हथियारों का इस्तेमाल कर सकते हैं।
तो, अगर इनपुट ए =[2, 1, 7] जैसा है; एच =11, तो आउटपुट 3 होगा, क्योंकि अगर हम डैमेज पावर 7 के साथ हथियार का उपयोग करते हैं, तो 2 का उपयोग करें और फिर से 7 का उपयोग करें हम दुश्मन को मार सकते हैं।
कदम
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
sort the array A n := size of A x := (A[n - 1] + A[n - 2]) return H / x * 2 + (H mod x + A[n - 1] - 1) / A[n-1]
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; int solve(vector<int> A, int H){ sort(A.begin(), A.end()); int n = A.size(); int x = (A[n - 1] + A[n - 2]); return H / x * 2 + (H % x + A[n - 1] - 1) / A[n - 1]; } int main(){ vector<int> A = { 2, 1, 7 }; int H = 11; cout << solve(A, H) << endl; }
इनपुट
{ 2, 1, 7 }, 11
आउटपुट
3