मान लीजिए कि हमारे पास n तत्वों के साथ एक सरणी A है और दूसरी संख्या s है। मेज पर एक खाली पानी का मग और n खाली पानी का मग है। एक खेल में, कुछ खिलाड़ी होते हैं। प्रत्येक चाल में, एक खिलाड़ी पानी का एक खाली मग लेता है और उसमें से सारा पानी कप में डाल देता है। यदि यह ओवरफिल हो जाता है, तो खिलाड़ी हार जाएगा। हमें यह देखना होगा कि वे सभी विजेता होंगे या नहीं (कप ओवरफिल नहीं होगा)। यदि एक अप पहले ही पूरी तरह से भर चुका है, तो अगला खिलाड़ी अपनी चाल नहीं चलेगा। यहाँ s खाली कप की क्षमता है और A[i] ith कप में मौजूद पानी की मात्रा है।
तो, अगर इनपुट ए =[3, 1, 3] जैसा है; s =4, तो आउटपुट ट्रू होगा, क्योंकि पहले और दूसरे प्लेयर द्वारा कप भर जाएगा। आखिरी के लिए, खिलाड़ी उस चाल को नहीं खेलेगा।
कदम
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
k := 0 n := size of A sort the array A for initialize i := 0, when i < n - 1, update (increase i by 1), do: k := k + A[i] if k > s, then: return false Otherwise return true
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h> using namespace std; bool solve(vector<int> A, int s){ int k = 0; int n = A.size(); sort(A.begin(), A.end()); for (int i = 0; i < n - 1; i++) k += A[i]; if (k > s) return false; else return true; } int main(){ vector<int> A = { 3, 1, 3 }; int s = 4; cout << solve(A, s) << endl; }
इनपुट
{ 3, 1, 3 }, 4
आउटपुट
1