মান লিজিয়ে আমাদের তিনটি ভ্যালু আছে a, b, c। আমরা তিনটি স্টোন পাইল নিয়ে একটি সলিটেয়ার গেম খেলছি যাদের আকার যথাক্রমে a, b, c। প্রতিটি টার্নে খেলাড় দুটি ভিন্ন নন-ইম্পটি পাইল বাছায়, প্রতিটি থেকে একটি করে স্টোন নেয় এবং নিজের স্কোরে ১ যোগ করে। গেমটি শেষ হয় যখন দুইটও নন-ইম্পটি পাইল থাকে না। আমাদের সর্বোচ্চ স্কোর বের করতে হবে।
যেমন, ইনপুট হলে 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