#include<iostream>
#include<queue>
#include<memory.h>
#include<stdio.h>
using namespace std;
int main(int argc, char *argv[])
{
int t;
scanf("%d",&t);
for( int k = 1; k<=t ; k++)
{
int current_count[10];
int last_remove[10];
int pNum;
int removed_count = 0;
int a[53];
memset(a,0,sizeof(a));
scanf("%d",&pNum);
//init
for( int i=0; i<pNum ; i++ )
{
current_count[i] = 1;
}
queue<int> array_queue[10];
int tmp;
for( int i=0; i<52 ; i++ )
{
scanf("%d",&tmp);
array_queue[0].push(tmp);
}
bool unwinnable = false;
//game begin
for( int turn = 0; turn <= pNum ; turn++ )
{
//check unwinnable
if( a[removed_count] > 700 )
{
unwinnable = true;
break;
}
if( turn == pNum )
turn = 0;
if(array_queue[turn].empty())
continue;
int current_top = array_queue[turn].front();
array_queue[turn].pop();
last_remove[turn] = current_top;
if( current_top == current_count[turn]){
if( turn != pNum-1 )
array_queue[turn+1].push(current_top);
else{
if (++removed_count == 52)
break;
}
}
else
{
a[removed_count]++;
array_queue[turn].push(current_top);
}
//count
if(++current_count[turn] == 14)
current_count[turn] = 1; //back to one;
}
//print
printf("Case %d:",k);
if(unwinnable)
{
printf(" unwinnable\n");
}
else{
for( int i=0; i<pNum ; i++ )
{
printf(" %d",last_remove[i]);
}
printf("\n");
}
}
return 0;
}
siciy 1003. Hit or Miss
最新推荐文章于 2021-01-28 10:03:00 发布