#include <iostream>
#include <cstring>
#include <queue>
//#include <cstdlib>
using namespace std;
int players;
queue<int> pl[11];
int matchingNum[10];
int ct;
void play() {
while(pl[players].size() != 52 && ct != 52 * 13) {
/*system("pause");
cout << endl << "Current match : ";
for(int i = 0; i < players; i++) {
cout << matchingNum[i] << ' ';
}
cout << endl;
for(int i = 0; i < players; i++) {
cout << "The " << i << " queue: ";
if(pl[i].empty()) {
cout << "EMPTY" << endl;
}
else {
for(int j = 0; j < pl[i].size(); j++) {
int tmp = pl[i].front();
cout << tmp << ' ';
pl[i].pop();
pl[i].push(tmp);
}
cout << endl;
}
}*/
for(int i = 0; i < players; i++) {
if(pl[i].empty()) {
continue;
}
matchingNum[i]++;
if(matchingNum[i] == 14) {
matchingNum[i] = 1;
}
if(matchingNum[i] == pl[i].front()) {
ct = 0;
int tmp = pl[i].front();
//cout << "REACH HERE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" << endl;
pl[i+1].push(tmp);
pl[i].pop();
}
else {
ct++;
int tmp = pl[i].front();
pl[i].pop();
pl[i].push(tmp);
}
}
}
return;
}
void initialize() {
for(int i = 0; i < 10; i++) {
matchingNum[i] = 0;
}
for(int i = 0; i < 11; i++) {
while(!pl[i].empty()) {
pl[i].pop();
}
}
ct = 0;
}
int main() {
int cases;
cin >> cases;
for(int count = 1; count <= cases; count++) {
initialize();
cin >> players;
for(int i = 1; i <= 52; i++) {
int tmp;
cin >> tmp;
pl[0].push(tmp);
}
play();
cout << "Case " << count << ": ";
if(pl[players].size() == 52) {
cout << matchingNum[0];
for(int i = 1; i < players; i++) {
cout << ' ' << matchingNum[i];
}
cout << endl;
}
else {
cout << "unwinnable" << endl;
}
}
return 0;
}
1003. Hit or Miss
最新推荐文章于 2024-02-12 21:20:19 发布