मान लीजिए हमारे पास तीन मान a, b और c हैं। हम तीन ढेरों के साथ एक सॉलिटेयर गेम खेल रहे हैं जिनके आकार a, b, और c हैं। प्रत्येक मोड़ पर खिलाड़ी दो अलग-अलग नॉन-खाली ढेर चुनता है, प्रत्येक से एक पत्थर लेता है, और अपने स्कोर में 1 पॉइंट जोड़ता है। गेम तब समाप्त होता है जब दो से कम नॉन-खाली ढेर बचते हैं। हमें अधिकतम स्कोर ढूंढना है जो आप प्राप्त कर सकते हैं।
उदाहरण के लिए, यदि इनपुट है a = 4, b = 4, c = 6, तो आउटपुट 7 होगा क्योंकि प्रारंभिक स्थिति (4, 4, 6) है, फिर हम इन चरणों का पालन कर सकते हैं:
- पहले और दूसरे ढेर से चुनें: वर्तमान स्थिति
(3, 3, 6) - पहले और तीसरे ढेर से चुनें: वर्तमान स्थिति
(2, 3, 5) - पहले और तीसरे ढेर से चुनें: वर्तमान स्थिति
(1, 3, 4) - पहले और तीसरे ढेर से चुनें: वर्तमान स्थिति
(0, 3, 3) - दूसरे और तीसरे ढेर से चुनें: वर्तमान स्थिति
(0, 2, 2) - दूसरे और तीसरे ढेर से चुनें: वर्तमान स्थिति
(0, 1, 1) - दूसरे और तीसरे ढेर से चुनें: वर्तमान स्थिति
(0, 0, 0)
समाधान के चरण
minimum := min(a, b, c)maximum := max(a, b, c)left := a + b + c - maximum - minimum- यदि
maximum - left <= minimum, तो:minimum + left - (1 + minimum - (maximum - left)) // 2वापस करें
minimum + min(maximum - minimum, left)वापस करें
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
def solve(a, b, c):
minimum = min(a,b,c)
maximum = max(a,b,c)
left = a+b+c-maximum-minimum
if maximum-left <= minimum:
return minimum + left - (1+minimum-(maximum-left))//2
return minimum + min(maximum-minimum, left)
a = 4
b = 4
c = 6
print(solve(a, b, c))
इनपुट
4, 4, 6
आउटपुट
7