ধরুন অমল এবং বিমল একটি খেলা খেলছে এবং অমলের পালা প্রথমে। গেমটি নিচের মত -
একটি গাদা মধ্যে n পাথর আছে. প্রতিটি খেলোয়াড় গাদা থেকে একটি পাথর নিতে পারে এবং সেই পাথরের অবস্থানের উপর ভিত্তি করে পয়েন্ট পেতে পারে। অমল এবং বিমল পাথরের মূল্য ভিন্নভাবে বিবেচনা করতে পারে।
আমাদের একই দৈর্ঘ্যের দুটি অ্যারে আছে, A_Values এবং B_Values। প্রতিটি A_Values[i] এবং B_Values[i] যথাক্রমে অমল এবং বিমল কিভাবে ith পাথরকে মূল্য দেয় তা উপস্থাপন করে। এখানে যার স্কোর সর্বাধিক, সমস্ত পাথর বের করার পরে তিনি বিজয়ী হবেন। টাই হলে খেলাটি ড্র হয়। দুই খেলোয়াড়ই ভালো খেলবে। তারা উভয়ই অপরের মান জানে। তাই অমল জিতলে ১ রিটার্ন করুন। বিমল জিতলে ফিরুন -১। এবং ড্র ম্যাচের জন্য, 0 ফেরত দিন।
সুতরাং, যদি ইনপুটটি A_Values =[2,4] B_Values =[3,5] এর মত হয়, তাহলে আউটপুট হবে 1 কারণ আমাল বিন্দু 4 সহ দ্বিতীয় পাথর নির্বাচন করবে, তাই বিমলের কাছে পয়েন্ট সহ প্রথম পাথর নেওয়ার শুধুমাত্র একটি সুযোগ রয়েছে। 3, কিন্তু যেহেতু আমালের স্কোর বেশি, তাই সে জিতেছে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- n :=A_Values এর আকার
- combinedValues :=একটি নতুন তালিকা
- আমি 0 থেকে n রেঞ্জের জন্য, কর
- tmpV :=A_Values[i] + B_Values[i]
- শেষে সম্মিলিত মানগুলিতে জোড়া (temV, i) ঢোকান
- বিপরীত ক্রমে সম্মিলিত মান তালিকা সাজান
- স্কোর_এ :=০, স্কোর_বি :=০
- আমি 0 থেকে n - 1 রেঞ্জের জন্য, কর
- curV :=combinedValues[i]
- যদি i mod 2 0 এর মত হয়, তাহলে
- স্কোর_এ :=স্কোর_এ + এ_মান[curV[1]]
- অন্যথায়,
- স্কোর_বি :=স্কোর_বি + বি_মান[curV[1]]
- যদি স্কোর_এ> স্কোর_বি, তাহলে
- প্রত্যাবর্তন 1
- অন্যথায় যখন স্কোর_এ স্কোর_বি এর সমান, তখন
- রিটার্ন 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