Предмет: Информатика, автор: koko896

С++
Помогите пожалуйста написать код))
В колоде n карт, пронумерованных от 1 до n. Петя и Иван раздают все карты (не обязательно поровну). Оба игрока берут верхнюю карту из своей колоды и их сравнивают. Тот, у кого карта больше, выигрывает и берет обе карты себе: сначала кладет карту противника под низ своей колоды, а затем и свою карту под низ колоды. Если колода игрока остается пустой, игрок становится проигравшим. Помогите определить, за сколько ходов закончится игра и кто из игроков окажется победителем. Если игра становится бесконечной, тогда напечатайте: «Оба проиграли».

Приложения:

Ответы

Автор ответа: oficus
1

Ответ:

#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;

}

Объяснение:


koko896: Спасибо!
bucefal4ik: Всем привет, продаю гараж недорого, небитый и некрашеный. Живу в Казане. Всем ку, кто из Казани. Если заинтересует, пишите!
Похожие вопросы
Предмет: Русский язык, автор: мурмургав
Предмет: Русский язык, автор: Banu1111
Предмет: Геометрия, автор: wwwashibanova05