숫자 n이 있고 각각 크기가 k1과 k2인 두 개의 배열 A와 B가 있다고 가정합니다. 재미있는 카드 게임을 하고 있는 Amal과 Bimalare. 1부터 n까지 n개의 카드가 있습니다. 처음에는 카드가 그들 사이에 분배됩니다. 게임은 다음과 같이 진행됩니다. 각 턴에 각 플레이어는 자신의 카드 중 하나(원하는 카드)를 가져와서 테이블 위에 놓아 다른 플레이어가 자신이 선택한 카드를 볼 수 없도록 합니다. 그런 다음 두 카드를 모두 공개하고 카드 번호가 더 큰 플레이어가 두 카드를 모두 손에 듭니다. 모든 카드는 횟수에 관계없이 사용할 수 있습니다. Amal이 플레이하는 카드를 나타내고 B는 Bimal이 플레이하는 카드를 나타냅니다. 플레이어는 자신에게 카드가 없으면 집니다. 최종 승자를 찾아야 합니다.
따라서 입력이 n =5와 같으면; A =[3, 2]; B =[5, 1, 4]인 경우 출력은 Bimal이 됩니다. 왜냐하면 처음에는 (3, 5), Bimal은 모든 카드를 가져오고, (3, 1)은 Amal이 두 카드를 모두 가져갔기 때문입니다. , 4) Bimal이 모두 가져간 다음 Amal이 1을 사용하면 Bimal이 카드 5로 가져오므로 Amal의 손에는 카드가 없습니다.
단계
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
d := 0 e := 0 for initialize i := 0, when i < size of A, update (increase i by 1), do: f := A[i] if d < f, then: d := f for initialize i := 0, when i < size of A, update (increase i by 1),do: f := A[i] if e < f, then: e := f if d > e, then: return "Amal" Otherwise return "Bimal"
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
#include<bits/stdc++.h> using namespace std; string solve(int n, vector<int> A, vector<int> B){ int d = 0; int e = 0; for(int i = 0; i<A.size(); i++){ int f = A[i]; if (d < f) d = f; } for(int i = 0; i<A.size(); i++){ int f = A[i]; if(e < f) e = f; } if (d > e) return "Amal"; else return "Bimal"; } int main(){ int n = 5; vector<int> A = {3, 2}; vector<int> B = {5, 1, 4}; cout << solve(n, A, B) << endl; }
입력
5, {3, 2}, {5, 1, 4}
출력
Bimal