मान लीजिए हमारे पास तीन संख्याएं a, b और c हैं। a, b, और c संख्या के पत्थरों के साथ पत्थरों के तीन ढेर हैं। हर बार हम ये ऑपरेशन कर सकते हैं:
पहले ढेर से एक पत्थर और दूसरे ढेर से दो पत्थर लें (जब ढेर में आवश्यक संख्या में पत्थर हों)
दूसरे ढेर से एक पत्थर और तीसरे ढेर से दो पत्थर लें (जब ढेर में आवश्यक संख्या में पत्थर हों)
हमें गिनना है कि हम अधिकतम कितने पत्थर एकत्र कर सकते हैं?
उदाहरण के लिए, यदि इनपुट a = 3; b = 4; c = 5 है, तो आउटपुट 9 होगा, क्योंकि दो ऑपरेशन में हम दूसरे ढेर से दो पत्थर और तीसरे ढेर से चार पत्थर ले सकते हैं, कुल मिलाकर हमारे पास 6 पत्थर हैं, फिर पहले से एक और दूसरे से दो लेकर 3 और पत्थर प्राप्त करें।
चरण
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
return (minimum of b and floor of (c / 2) + minimum of a and (b - minimum of b and floor of (c / 2)) / 2) * 3
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
#includeusing namespace std; int solve(int a, int b, int c){ return (min(b, c / 2) + min(a, (b - min(b, c / 2)) / 2)) * 3; } int main(){ int a = 3; int b = 4; int c = 5; cout << solve(a, b, c) << endl; }
इनपुट
3, 4, 5
आउटपुट
9