একটি অ্যারে আছে যাতে 1 থেকে n পর্যন্ত সংখ্যা শাফল করা অবস্থায় আছে। আরেকটি ইন্টিজার K দেওয়া আছে। N জন লোক ব্যাডমিন্টন খেলার জন্য কতারে দাঁড়িয়েছে। প্রথম দুজন খেলবে, হারা हुआ কতারের শেষে যাবে। জয়ী পরবর্তী ব্যক্তির সাথে খেলবে। এভাবে কেউ K বার التوالي জয় না করলেও চলবে।
কিউ: [2,1,3,4,5], K=2 → আউটপুট 5। ব্যাখ্যা: (2,1)→2 জয়, কিউ: [3,4,5,1] (2,3)→3 জয়, কিউ: [4,5,1,2] (3,4)→4 জয়, কিউ: [5,1,2,3] (4,5)→5 জয়, কিউ: [1,2,3,4] (5,1)→5 জয় (২ বার التوالي) → বিজয়ী 5।
অ্যালগরিদম
winner(arr, n, k)
Begin if k >= n-1 return n best_player := 0 win_count := 0 for each e in arr do if e > best_player then best_player := e if e is 0th element win_count := 1 else win_count++ end if if win_count >= k return best_player done return best_player End
উদাহরণ
#include <iostream> using namespace std; int winner(int arr[], int n, int k) { if (k >= n-1) return n; int best_player = 0, win_count = 0; for (int i=0; i<n; i++) { if (arr[i] > best_player) { best_player = arr[i]; if (i) win_count = 1; } else win_count += 1; if (win_count >= k) return best_player; } return best_player; } main() { int arr[] = {3,1,2}; int n = sizeof(arr)/sizeof(arr[0]); int k = 2; cout << winner(arr, n, k); }আউটপুট
3