728x90
반응형
문제가 도도 수연이 동시에 그라운드에 카드를 놓는지 알았는데 도도-> 수연 -> 도도 이렇게 차례로 놓는게 각각 1번씩 카운팅되는것이었다..
#include <iostream>
#include <vector>
#include<deque>
using namespace std;
deque<int>dodo;
deque<int>su;
deque<int>ground_dodo;
deque<int>ground_su;
//동시애 그라운드에 카드를 내려놓는게 아니라 한명씩 내려놓고 종칠사람
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n, m;
cin >> n >> m;
int d, s;
for (int i = 0; i < n; i++) {
cin >> d >> s;
dodo.push_front(d);
su.push_front(s);
}
//게임중 덱이 0이되는경우? - 그라운드에 내려놓을때
bool dodo_turn = true;
bool su_turn = false;
//m번 진행함
for (int i = 0; i < m; i++) {
//2번 - 자신의 그라운드에 덱 제일 위 카드 올리기
if (dodo_turn) {
if (dodo.size() != 0) {
ground_dodo.push_front(dodo[0]);
dodo.pop_front();
}
}
if (su_turn) {
if (su.size() != 0) {
ground_su.push_front(su[0]);
su.pop_front();
}
}
if (dodo.size() == 0 || su.size() == 0)break;
bool dodo_bell = false;
bool su_bell = false;
//3번 - 종치기
//그라운드에서 합이 5면 수연, 숫자 5 있으면 도도가
if (ground_dodo.size() != 0 && ground_su.size() != 0) {
if ((ground_dodo[0] + ground_su[0]) == 5) {
su_bell = true;
}
if (ground_dodo[0] == 5 || ground_su[0] == 5) {
dodo_bell = true;
}
}
else if (ground_dodo.size() != 0 && ground_su.size() == 0) {
if(ground_dodo[0]==5)dodo_bell = true;
}
else if (ground_dodo.size() == 0 && ground_su.size() != 0) {
if (ground_su[0] == 5)dodo_bell = true;
}
if (dodo_bell) {
while (ground_su.size() > 0) {
dodo.push_back(ground_su.back());
ground_su.pop_back();
}
while (ground_dodo.size() > 0) {
dodo.push_back(ground_dodo.back());
ground_dodo.pop_back();
}
}
if (su_bell) {
while (ground_dodo.size() > 0) {
su.push_back(ground_dodo.back());
ground_dodo.pop_back();
}
while (ground_su.size() > 0) {
su.push_back(ground_su.back());
ground_su.pop_back();
}
}
if (dodo_turn) {
dodo_turn = false;
su_turn = true;
continue;
}
if (su_turn) {
su_turn = false;
dodo_turn = true;
}
}
if (dodo.size() == su.size()) {
cout << "dosu";
}
if (dodo.size() > su.size()) {
cout << "do";
}
if (dodo.size() < su.size()) {
cout << "su";
}
}
728x90
반응형