Code: Select all
2 51
2 49
2 51
2 48
1 47
2 41
2 44
1 42
1 45
2 34
1 51
2 48
2 38
1 49
2 44
2 51
1 49
1 43
2 50
2 51
2 51
1 48
1 49
2 49
2 40
2 44
1 47
1 47
1 51
1 44
Moderator: Board moderators
Code: Select all
2 51
2 49
2 51
2 48
1 47
2 41
2 44
1 42
1 45
2 34
1 51
2 48
2 38
1 49
2 44
2 51
1 49
1 43
2 50
2 51
2 51
1 48
1 49
2 49
2 40
2 44
1 47
1 47
1 51
1 44
Code: Select all
const
finp = '';
fout = '';
var
fi, fo : text;
s : array[1 .. 4] of string;
deck : array[1 .. 2] of string;
{----------------}
procedure OpenFile;
begin
assign(fi, finp);
reset(fi);
assign(fo, fout);
rewrite(fo);
end;
{----------------}
procedure Input;
begin
readln(fi, s[2]);
readln(fi, s[3]);
readln(fi, s[4]);
end;
{----------------}
procedure Convert;
var
i, j : integer;
player : integer;
c : char;
begin
deck[1] := '';
deck[2] := '';
player := 1;
for i := 1 to 4 do
begin
for j := 1 to 13 do
begin
player := 3 - player;
c := s[i][3 * (j - 1) + 2];
if c = 'J' then deck[player] := '1' + deck[player]
else
if c = 'Q' then deck[player] := '2' + deck[player]
else
if c = 'K' then deck[player] := '3' + deck[player]
else
if c = 'A' then deck[player] := '4' + deck[player]
else deck[player] := '0' + deck[player];
end;
end;
end;
{----------------}
procedure Generate;
var
table : string;
player : integer;
c : char;
card : integer;
begin
player := 1;
repeat
table := '';
repeat
player := 3 - player;
if deck[player] = '' then exit;
c := deck[player][1];
table := table + c;
delete(deck[player], 1, 1);
until c <> '0';
card := ord(c) - 48;
repeat
player := 3 - player;
while card > 0 do
begin
if deck[player] = '' then exit;
c := deck[player][1];
table := table + c;
delete(deck[player], 1, 1);
card := card - 1;
if c <> '0' then
begin
card := ord(c) - 48;
break;
end;
end;
until card = 0;
deck[3 - player] := deck[3 - player] + table;
until false;
end;
{----------------}
procedure Output;
begin
if deck[1] = '' then
begin
write(fo, '2');
writeln(fo, length(deck[2]) : 3);
end
else
begin
write(fo, '1');
writeln(fo, length(deck[1]) : 3);
end;
end;
{----------------}
procedure Process;
begin
readln(fi, s[1]);
while s[1] <> '#' do
begin
Input;
Convert;
Generate;
Output;
readln(fi, s[1]);
while s[1] = '' do readln(fi, s[1]);
end;
end;
{----------------}
procedure CloseFile;
begin
close(fi);
close(fo);
end;
{----------------}
begin
OpenFile;
Process;
CloseFile;
end.
Code: Select all
#include<iostream>
#include<stack>
#include<vector>
#include<string>
#include<map>
#include<cstdio>
using namespace std;
vector<string> nonD;
vector<string> deal;
map<char,int> mapp;
//(A), 2-9, Ten (T), Jack (J), Queen (Q) and King (K).
void simulate()
{
vector<string> floor;
int strt = 2; // start of game for non dealer
int num = 1;
bool face=false;
while(true)
{
string currCard;
if(strt == 2)
{
while(num)
{
if(nonD.size() == 0) return;
currCard = nonD[nonD.size()-1];
nonD.pop_back();
floor.push_back(currCard);
if( currCard[1] == 'A' || currCard[1] == 'J' || currCard[1] == 'Q'|| currCard[1] == 'K')
{
face = true;
break;
}
num --;
}
if(face && num !=0) num = mapp[currCard[1]];
else if(face && num == 0)
{
for(int i = 0 ; i < (int)floor.size() ; i++)
{
string f = floor[i];
deal.insert(deal.begin(), f);
}
floor.clear();
face = false;
num = 1;
}
else if(num == 0) num = 1;
strt = 1;
}
else if( strt ==1)
{
while(num)
{
if(deal.size() == 0) return;
currCard = deal[deal.size()-1];
deal.pop_back();
floor.push_back(currCard);
if( currCard[1] == 'A' || currCard[1] == 'J' || currCard[1] == 'Q'|| currCard[1] == 'K')
{
face = true;
break;
}
num --;
}
if(face && num !=0) num = mapp[currCard[1]];
else if(face && num == 0)
{
for(int i = 0 ; i < (int)floor.size() ; i++)
{
string f = floor[i];
nonD.insert(nonD.begin(), f);
}
floor.clear();
face = false;
num = 1;
}
else if(num == 0) num = 1;
strt = 2;
}
}
}
int main()
{
mapp['J'] = 1;
mapp['Q'] = 2;
mapp['K'] = 3;
mapp['A'] = 4;
string input;
bool last=false;
bool flag = false; // card to non dealer
while (true)
{
cin>>input;
if( input =="#")
break;
if(last)
{
cout<<endl;
last = false;
}
if( !flag) nonD.push_back(input), flag = true;
else deal.push_back(input), flag = false;
if( nonD.size() == 26 && deal.size() == 26)
{
simulate();
if(nonD.size() == 0) cout<<"1 "<<deal.size();
else if(deal.size() == 0) cout<<"2 "<<nonD.size();
deal.clear();
nonD.clear();
last = true;
}
}
return 0;
}
Code: Select all
H3 H3 H3 H3 H3 H3 H3 H3 H3 H3 H3 H3 H3
H3 H3 H3 H3 H3 H3 H3 H3 H3 H3 H3 H3 H3
H3 H3 H3 H3 H3 H3 H3 H3 H3 H3 H3 H3 H3
H3 H3 H3 H3 H3 H3 H3 H3 H3 H3 H3 H3 H3
#
Code: Select all
1 0
Code: Select all
1 0