मान लीजिए अमल और बिमल एक खेल खेल रहे हैं और अमल की बारी पहले है। खेल इस प्रकार है:
एक ढेर में n पत्थर हैं। प्रत्येक खिलाड़ी ढेर से एक पत्थर ले सकता है और उस पत्थर की स्थिति के आधार पर अंक प्राप्त कर सकता है। अमल और बिमल पत्थरों को अलग तरीके से महत्व दे सकते हैं।
हमारे पास समान लंबाई की दो सरणियाँ हैं, A_Values और B_Values। प्रत्येक A_Values[i] और B_Values[i] क्रमशः अमल और बिमल द्वारा i-वें पत्थर को दिए गए महत्व को दर्शाता है। यहां जिसका स्कोर अधिकतम होगा, सभी पत्थर लेने के बाद वह विजेता होगा। यदि टाई है, तो खेल ड्रॉ में समाप्त होता है। दोनों खिलाड़ी इष्टतम रूप से खेलेंगे। दोनों एक-दूसरे के मूल्यों को जानते हैं। इसलिए यदि अमल जीतता है, तो 1 वापस करें। यदि बिमल जीतता है, तो -1 वापस करें। और ड्रॉ मैच के लिए, 0 वापस करें।
इसलिए, यदि इनपुट है A_Values = [2,4] B_Values = [3,5], तो आउटपुट 1 होगा क्योंकि अमल 4 अंक वाला दूसरा पत्थर चुनेगा, इसलिए बिमल के पास केवल पहला पत्थर 3 अंक के साथ लेने का मौका है, लेकिन चूंकि अमल का स्कोर अधिक है, इसलिए वह जीतता है।
इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:
- n := A_Values का आकार
- combinedValues := एक नई सूची
- i को 0 से n तक के लिए, करें
- tmpV := A_Values[i] + B_Values[i]
- जोड़ी (tmpV, i) को combinedValues के अंत में डालें
- combinedValues सूची को उल्टे क्रम में क्रमबद्ध करें
- score_a := 0, score_b := 0
- i को 0 से n - 1 तक के लिए, करें
- curV := combinedValues[i]
- यदि i mod 2, 0 के समान है, तो
- score_a := score_a + A_Values[curV[1]]
- अन्यथा,
- score_b := score_b + B_Values[curV[1]]
- यदि score_a > score_b, तो
- 1 वापस करें
- अन्यथा जब score_a, score_b के समान है, तो
- 0 वापस करें
- अन्यथा,
- -1 वापस करें
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
def solve(A_Values, B_Values):
n = len(A_Values)
combinedValues = []
for i in range(n):
tmpV = A_Values[i] + B_Values[i]
combinedValues.append([tmpV, i])
combinedValues.sort(reverse=True)
score_a, score_b = 0, 0
for i in range(n):
curV = combinedValues[i]
if (i % 2 == 0):
score_a += A_Values[curV[1]]
else:
score_b += B_Values[curV[1]]
if (score_a > score_b):
return 1
elif (score_a == score_b):
return 0
else:
return -1
A_Values = [2,4]
B_Values = [3,5]
print(solve(A_Values, B_Values))
इनपुट
[2,4], [3,5]
आउटपुट
1