-
Notifications
You must be signed in to change notification settings - Fork 2
/
cardgame.cpp
78 lines (63 loc) · 2.16 KB
/
cardgame.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/*
Карточная игра
В игре в зожника карточная колода раздается поровну двум игрокам.
Далее они вскрывают по одной верхней карте, и тот, чья карта старше, забирает себе обе вскрытые карты, которые кладутся под низ его колоды.
Тот, кто остается без карт - проигрывает.
Для простоты будем считать, что все карты различны по номиналу, а также, что самая младшая карта побеждает самую старшую карту ("шестерка берет туза").
Игрок, который забирает себе карты, сначала кладет под низ своей колоды карту первого игрока, затем карту второго игрока (то есть карта второго игрока оказывается внизу колоды).
Напишите программу, которая моделирует игру в зожника и определяет, кто выигрывает.
В игре участвует 10 карт, имеющих значения от 0 до 9, большая карта побеждает меньшую, карта со значением 0 побеждает карту 9.
Формат ввода
Две строки: первая строка содержит 5 чисел, разделенных пробелами - номера карт первого игрока, вторая строка - номера карт второго игрока.
Карты перечислены сверху вниз, то есть каждая строка начинается с той карты, которая будет открыта первой.
Формат вывода
Программа должна определить, кто выигрывает при данной раздаче, и вывести слово "first" или "second", после чего вывести количество ходов, сделанных до выигрыша.
Если на протяжении 10^6 ходов игра не заканчивается, программа должна вывести слово "botva".
Пример
1 3 5 7 9
2 4 6 8 0
second 5
*/
#include <iostream>
#include <queue>
int main()
{
std::queue<int> first, second;
int k;
for (int i = 0; i < 5; i++) {
std::cin >> k;
first.push(k);
}
for (int i = 0; i < 5; i++) {
std::cin >> k;
second.push(k);
}
k = 0;
while (!first.empty() && !second.empty()) {
int a = first.front();
int b = second.front();
first.pop();
second.pop();
if (a > b && !(a == 9 && b == 0)) {
// Победил первый
first.push(a);
first.push(b);
}
else {
// Победил второй
second.push(a);
second.push(b);
}
k++;
if (k == 1000000) {
std::cout << "botva" << std::endl;
return 0;
}
}
if (first.empty()) {
std::cout << "second " << k << std::endl;
}
else {
std::cout << "first " << k << std::endl;
}
}