/*
NAME: Bogdan
POPESCU
SCHOOL: GRIGORE
MOISIL NCSC
GRADE: 12
DIVISION: SR3
*/
#include
<iostream>
using namespace
std;
int a[5][20],
b[5][20],c[5][20];
int nr_set,
nr_run;
int
sets[2],runs[2];
int nr_seti,
nr_runi;
int
setsi[2],runsi[2];
int poz;
int ntot,ntoti;
int pune(char
n,char s){
int x;
switch(n){
case 'A':switch(s){
case 'S':a[1][1]=1;x=11;
break;
case 'H':a[2][1]=1;x=12;
break;
case 'C':a[3][1]=1;x=13;
break;
case 'D':a[4][1]=1;x=14;
break;
}
break;
case '2':switch(s){
case 'S':a[1][2]=1;x=21;
break;
case 'H':a[2][2]=1;x=22;
break;
case 'C':a[3][2]=1;x=23; break;
case 'D':a[4][2]=1;x=24;
break;
}
break;
case '3':switch(s){
case
'S':a[1][3]=1;x=31;break;
case 'H':a[2][3]=1;x=32;break;
case
'C':a[3][3]=1;x=33;break;
case
'D':a[4][3]=1;x=34;break;
}
break;
case '4':switch(s){
case
'S':a[1][4]=1;x=41;break;
case 'H':a[2][4]=1;x=42;break;
case
'C':a[3][4]=1;x=43;break;
case
'D':a[4][4]=1;x=44;break;
}
break;
case '5':switch(s){
case 'S':a[1][5]=1;x=51;break;
case
'H':a[2][5]=1;x=52;break;
case
'C':a[3][5]=1;x=53;break;
case
'D':a[4][5]=1;x=54;break;
}
break;
case '6':switch(s){
case 'S':a[1][6]=1;x=61;break;
case
'H':a[2][6]=1;x=62;break;
case
'C':a[3][6]=1;x=63;break;
case
'D':a[4][6]=1;x=64;break;
}
break;
case '7':switch(s){
case
'S':a[1][7]=1;x=71;break;
case
'H':a[2][7]=1;x=72;break;
case
'C':a[3][7]=1;x=73;break;
case
'D':a[4][7]=1;x=74;break;
}
break;
case '8':switch(s){
case
'S':a[1][8]=1;x=81;break;
case
'H':a[2][8]=1;x=82;break;
case
'C':a[3][8]=1;x=83;break;
case
'D':a[4][8]=1;x=84;break;
}
break;
case '9':switch(s){
case
'S':a[1][9]=1;x=91;break;
case
'H':a[2][9]=1;x=92;break;
case
'C':a[3][9]=1;x=93;break;
case 'D':a[4][9]=1;x=94;break;
}
break;
case 'T':switch(s){
case
'S':a[1][10]=1;x=101;break;
case
'H':a[2][10]=1;x=102;break;
case
'C':a[3][10]=1;x=103;break;
case 'D':a[4][10]=1;x=104;break;
}
break;
case 'J':switch(s){
case
'S':a[1][11]=1;x=111;break;
case
'H':a[2][11]=1;x=112;break;
case 'C':a[3][11]=1;x=113;break;
case
'D':a[4][11]=1;x=114;break;
}
break;
case 'Q':switch(s){
case
'S':a[1][12]=1;x=121;break;
case
'H':a[2][12]=1;x=122;break;
case
'C':a[3][12]=1;x=123;break;
case
'D':a[4][12]=1;x=124;break;
}
break;
case 'K':switch(s){
case
'S':a[1][13]=1;x=131;break;
case
'H':a[2][13]=1;x=132;break;
case
'C':a[3][13]=1;x=133;break;
case
'D':a[4][13]=1;x=134;break;
}
break;
}
return x;
}
void _copy(int
b[5][20],int a[5][20]){
for(int i=1;i<5;i++)
for(int j=1;j<14;j++)
b[i][j]=a[i][j];
}
int cauta(){
int mod_run=0,mod_set=0;
int sets1[2]={0,0},runs1[2]={0,0};
int dump=-1;
for(int i=1;i<5;i++)
for(int j=1;j<14;j++)
if(a[i][j]){
dump=1;
int k;
for(k=j+1;k<14;k++)
if(a[i][k])
dump++;
else
break;
if(dump==5)
return 0;
if(dump==3 || dump==4){
runs1[mod_run]=dump;
mod_run++;
}
j=k;
}
int s;
for(int j=1;j<14;j++){
s=0;
for(int i=1;i<5;i++)
if(a[i][j])
s++;
if(s==3 || s==4){
sets1[mod_set]=s;
mod_set++;
}
}
int numtot=mod_set+mod_run;
if(numtot>2)
return 0;
else
if(ntot!=numtot);
ntot=numtot;
if(mod_set==nr_set)
if(sets[0]!=sets1[0] ||
sets[1]!=sets1[1]){
sets[0]=sets1[0];
sets[1]=sets1[1];
nr_set=mod_set;
return 1;
}
if(mod_run==nr_run)
if(runs[0]!=runs1[0] ||
runs[1]!=runs1[1]){
runs[0]=runs1[0];
runs[1]=runs1[1];
nr_run=mod_run;
return 1;
}
if(mod_run!=nr_run){
nr_run=mod_run;
runs[0]=runs1[0];
runs[1]=runs1[1];
return 1;
}
if(mod_set!=nr_set){
nr_set=mod_set;
sets[0]=sets1[0];
sets[1]=sets1[1];
return 1;
}
return 0;
}
void afisare(){
int nrafis=7;
/*
for(int i=1;i<5;i++){
for(int j=1; j<14;j++)
printf("%d ",a[i][j]);
printf("\n\n");
}
*/
int dump;
for(int i=1;i<5;i++)
for(int j=1;j<14;j++)
if(a[i][j]){
dump=1;
int k;
for(k=j+1;k<14;k++)
if(a[i][k])
dump++;
else
break;
if(dump==4){
for(int
l=j;l<k;l++){
if(l==1)
printf("%c",'A');
else
if(l==10)
printf("%c",'T');
else
if(l==11)
printf("%c",'J');
else
if(l==12)
printf("%c",'Q');
else
if(l==13)
printf("%c",'K');
else
printf("%d",l);
if(i==1)
printf("%c",'S');
else
if(i==2)
printf("%c",'H');
else
if(i==3)
printf("%c",'C');
else
if(i==4)
printf("%c",'D');
printf("
");
a[i][l]=0;
nrafis--;
}
ntot--;
}
}
int s;
for(int j=1;j<14;j++){
s=0;
for(int i=1;i<5;i++)
if(a[i][j])
s++;
if(s==4){
for(int i=1;i<5;i++)
if(a[i][j]){
if(j==1)
printf("%c",'A');
else
if(j==10)
printf("%c",'T');
else
if(j==11)
printf("%c",'J');
else
if(j==12)
printf("%c",'Q');
else
if(j==13)
printf("%c",'K');
else
printf("%d",j);
if(i==1)
printf("%c",'S');
else
if(i==2)
printf("%c",'H');
else
if(i==3)
printf("%c",'C');
else
if(i==4)
printf("%c",'D');
printf(" ");
a[i][j]=0;
nrafis--;
}
ntot--;
}
}
while(ntot){
for(int i=1;i<5;i++)
for(int j=1;j<14;j++)
if(a[i][j]){
dump=1;
int k;
for(k=j+1;k<14;k++)
if(a[i][k])
dump++;
else
break;
if(dump==3){
for(int
l=j;l<k;l++){
if(l==1)
printf("%c",'A');
else
if(l==10)
printf("%c",'T');
else
if(l==11)
printf("%c",'J');
else
if(l==12)
printf("%c",'Q');
else
if(l==13)
printf("%c",'K');
else
printf("%d",l);
if(i==1)
printf("%c",'S');
else
if(i==2)
printf("%c",'H');
else
if(i==3)
printf("%c",'C');
else
if(i==4)
printf("%c",'D');
printf("
");
a[i][l]=0;
nrafis--;
}
ntot--;
}
}
int s;
for(int j=1;j<14;j++){
s=0;
for(int i=1;i<5;i++)
if(a[i][j])
s++;
if(s==3){
for(int i=1;i<5;i++)
if(a[i][j]){
if(j==1)
printf("%c",'A');
else
if(j==10)
printf("%c",'T');
else
if(j==11)
printf("%c",'J');
else
if(j==12)
printf("%c",'Q');
else
if(j==13)
printf("%c",'K');
else
printf("%d",j);
if(i==1)
printf("%c",'S');
else
if(i==2)
printf("%c",'H');
else
if(i==3)
printf("%c",'C');
else
if(i==4)
printf("%c",'D');
printf(" ");
a[i][j]=0;
nrafis--;
}
ntot--;
}
}
}
while(nrafis){
for(int j=13;j>0;j--)
for(int i=1;i<5;i++)
if(a[i][j]){
if(j==1)
printf("%c",'A');
else
if(j==10)
printf("%c",'T');
else
if(j==11)
printf("%c",'J');
else
if(j==12)
printf("%c",'Q');
else
if(j==13)
printf("%c",'K');
else
printf("%d",j);
if(i==1)
printf("%c",'S');
else
if(i==2)
printf("%c",'H');
else
if(i==3)
printf("%c",'C');
else
if(i==4)
printf("%c",'D');
printf(" ");
a[i][j]=0;
nrafis--;
}
}
printf("\n\n");
}
void sterg(){
int s;
int ok;
for(int j=1;j<14;j++){
s=a[1][j]+a[2][j]+a[3][j]+a[4][j];
if(s && s<3)
for(int i=4;i>0;i--){
if(a[i][j]){
ok=0;
if(a[i][j-1]==1 &&
a[i][j+1]==1||
a[i][j-2]==1 &&
a[i][j-1]==1||
a[i][j+2]==1 &&
a[i][j+1]==1
)
ok=1;
if(ok==0){
a[i][j]=0;
return;
}
}
}
}
}
void citire(){
char n=0,s=0;
for(int i=0;i<7;i++){
scanf("%c%c,
",&n,&s);
pune(n,s);
}
scanf("\n");
_copy(c,a);
_copy(b,a);
cauta();
ntoti=ntot;
nr_runi=nr_run;
nr_seti=nr_set;
runsi[0]=runs[0];
runsi[1]=runs[1];
setsi[0]=sets[0];
setsi[1]=sets[1];
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
scanf("%c%c,
",&n,&s);
poz=pune(n,s);
if(cauta()){
sterg();
_copy(b,a);
}
_copy(a,b);
}
scanf("\n");
afisare();
_copy(a,c);
_copy(b,a);
nr_run=nr_runi;
nr_set=nr_seti;
runs[0]=runsi[0];
runs[1]=runsi[1];
sets[0]=setsi[0];
sets[1]=setsi[1];
ntot=ntoti;
}
}
int main()
{
freopen("rummy.in","r",stdin);
citire();
return 0;
}