Thứ Ba, 8 tháng 1, 2019

UVa 00555 - Bridge Hands (card game)

Link:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=7&page=show_problem&problem=496
Sol:
#include <bits/stdc++.h>
using namespace std;
vector<char> suits {'C', 'D', 'S', 'H'};
vector<char> num {'2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A'};
bool sortBy(string a, string b){
if(a[0] != b[0]){
return find(suits.begin(), suits.end(), a[0]) < find(suits.begin(), suits.end(), b[0]);
}
else{
return find(num.begin(), num.end(), a[1]) < find(num.begin(), num.end(), b[1]);
}
}
int main(){
vector<char> plyr {'N', 'E', 'S', 'W'};
map<char, vector<string> > hands;
int t;
char r1, r2, c[5];
string rd;
while(true){
scanf("%c\n", &r1);
if(r1 == '#') return 0;
hands.clear();
t = find(plyr.begin(), plyr.end(), r1) - plyr.begin();
t = (t + 1) % 4;
for(int i = 0; i < 26; i++){
scanf("%2s", c);
rd = string(c);
hands[plyr[t]].push_back(rd);
t = (t + 1) % 4;
}
scanf("\n");
for(int i = 0; i < 26; i++){
scanf("%2s", c);
rd = string(c);
hands[plyr[t]].push_back(rd);
t = (t + 1) % 4;
}
scanf("\n");
t = 2;
for(int i = 0; i < 4; i++){
printf("%c:", plyr[t]);
sort(hands[plyr[t]].begin(), hands[plyr[t]].end(), sortBy);
for(auto cad : hands[plyr[t]]){
cout << " " << cad;
}
printf("\n");
t = (t + 1) % 4;
}
}
}

Không có nhận xét nào:

Đăng nhận xét

Bài G - Educatioal Round 62

Đề bài: Bạn được cho 1 đồ thị vô hướng đặc biệt. Nó bao gồm $2n$ đỉnh được đánh số từ 1 đến 2n. Dưới đây là một số đặc tính của đồ thị: + ...