С++
Помогите пожалуйста написать код))
В колоде n карт, пронумерованных от 1 до n. Петя и Иван раздают все карты (не обязательно поровну). Оба игрока берут верхнюю карту из своей колоды и их сравнивают. Тот, у кого карта больше, выигрывает и берет обе карты себе: сначала кладет карту противника под низ своей колоды, а затем и свою карту под низ колоды. Если колода игрока остается пустой, игрок становится проигравшим. Помогите определить, за сколько ходов закончится игра и кто из игроков окажется победителем. Если игра становится бесконечной, тогда напечатайте: «Оба проиграли».
Answers & Comments
Ответ:
#include <iostream>
#include <deque>
#include <locale.h>
#include <dirent.h>
using namespace std;
int main(){
setlocale(LC_CTYPE, "");
int n, m, x;
deque <int> q_petya, q_ivan;
cin >> n >> m;
for(int i = 0; i < n; i++){
cin >> x;
q_petya.push_back(x);
}
for(int i = 0; i < m; i++){
cin >> x;
q_ivan.push_back(x);
}
int cnt = 0, petya, ivan;
while(!q_petya.empty() && !q_ivan.empty() && cnt < 1000000){
petya = q_petya.front();
ivan = q_ivan.front();
q_petya.pop_front();
q_ivan.pop_front();
if(petya > ivan){
q_petya.push_back(ivan);
q_petya.push_back(petya);
}
else{
q_ivan.push_back(petya);
q_ivan.push_back(ivan);
}
cnt++;
}
if(cnt == 1000000)
cout << "Оба проиграли";
else
if(q_petya.empty())
cout << cnt << " " << "Иван";
else
cout << cnt << " " << "Петя";
return 0;
}
Объяснение: