#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
/* トランプの枚数 */
#define N 52
/* トランプ構造体の定義 */
typedef struct playingcard {
char suit;
int number;
bool val;
} playingcard_t;
int main(void) {
playingcard_t deck[N];
char* suit = "SHCD";
int n = 0;
/* トランプを詰めたデッキを生成する */
for (int i = 0; i < 4; i++) {
for (int j = 1; j < 14; j++) {
deck[n].suit = suit[i];
deck[n].number = j;
deck[n].val = true;
n++;
}
}
/* 入力処理 */
char buffer[5];
scanf("%4s%*[^\n]", buffer
); if ((n > 52) || (n < 1)) {
return EXIT_FAILURE;
}
char *token;
/* バッファを空白でトークンに分ける */
for (int i = 0; i < n; i++) {
scanf("%4[^\n]%*[^\n]", buffer
); suit = token;
/* デッキ内のトランプとトークンが一致した時、トランプ構造体のブール値を false にする */
for (int j = 0; j < N; j++) {
if ((deck
[j
].
suit == suit
[0]) && (deck
[j
].
number == strtol(token
, NULL
, 10))) { deck[j].val = false;
break;
}
}
}
/* デッキのトランプ構造体のブール値が真の時のみ出力する */
for (int i = 0; i < N; i++) {
if (deck[i].val) {
printf("%c %d\n", deck
[i
].
suit, deck
[i
].
number); }
}
return EXIT_SUCCESS;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0ZGJvb2wuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKLyog44OI44Op44Oz44OX44Gu5p6a5pWwICovCiNkZWZpbmUgTiA1MgoKLyog44OI44Op44Oz44OX5qeL6YCg5L2T44Gu5a6a576pICovCnR5cGVkZWYgc3RydWN0IHBsYXlpbmdjYXJkIHsKICBjaGFyIHN1aXQ7CiAgaW50IG51bWJlcjsKICBib29sIHZhbDsKfSBwbGF5aW5nY2FyZF90OwoKaW50IG1haW4odm9pZCkgewogIHBsYXlpbmdjYXJkX3QgZGVja1tOXTsKICBjaGFyKiBzdWl0ID0gIlNIQ0QiOwogIGludCBuID0gMDsKICAvKiDjg4jjg6njg7Pjg5fjgpLoqbDjgoHjgZ/jg4fjg4Pjgq3jgpLnlJ/miJDjgZnjgosgKi8KICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewogICAgZm9yIChpbnQgaiA9IDE7IGogPCAxNDsgaisrKSB7CiAgICAgIGRlY2tbbl0uc3VpdCA9IHN1aXRbaV07CiAgICAgIGRlY2tbbl0ubnVtYmVyID0gajsKICAgICAgZGVja1tuXS52YWwgPSB0cnVlOwogICAgICBuKys7CiAgICB9CiAgfQogIC8qIOWFpeWKm+WHpueQhiAqLwogIGNoYXIgYnVmZmVyWzVdOwogIHNjYW5mKCIlNHMlKlteXG5dIiwgYnVmZmVyKTsKICBnZXRjaGFyKCk7CiAgbiA9IHN0cnRvbChidWZmZXIsIE5VTEwsIDEwKTsKICBpZiAoKG4gPiA1MikgfHwgKG4gPCAxKSkgewogICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKICB9CiAgY2hhciAqdG9rZW47CiAgLyog44OQ44OD44OV44Kh44KS56m655m944Gn44OI44O844Kv44Oz44Gr5YiG44GR44KLICovCiAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgIHNjYW5mKCIlNFteXG5dJSpbXlxuXSIsIGJ1ZmZlcik7CiAgICBnZXRjaGFyKCk7CiAgICB0b2tlbiA9IHN0cnRvayhidWZmZXIsICIgIik7CiAgICBzdWl0ID0gdG9rZW47CiAgICB0b2tlbiA9IHN0cnRvayhOVUxMLCAiICIpOwogICAgLyog44OH44OD44Kt5YaF44Gu44OI44Op44Oz44OX44Go44OI44O844Kv44Oz44GM5LiA6Ie044GX44Gf5pmC44CB44OI44Op44Oz44OX5qeL6YCg5L2T44Gu44OW44O844Or5YCk44KSIGZhbHNlIOOBq+OBmeOCiyAqLwogICAgZm9yIChpbnQgaiA9IDA7IGogPCBOOyBqKyspIHsKICAgICAgaWYgKChkZWNrW2pdLnN1aXQgPT0gc3VpdFswXSkgJiYgKGRlY2tbal0ubnVtYmVyID09IHN0cnRvbCh0b2tlbiwgTlVMTCwgMTApKSkgewogICAgICAgIGRlY2tbal0udmFsID0gZmFsc2U7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KICB9CiAgLyog44OH44OD44Kt44Gu44OI44Op44Oz44OX5qeL6YCg5L2T44Gu44OW44O844Or5YCk44GM55yf44Gu5pmC44Gu44G/5Ye65Yqb44GZ44KLICovCiAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspIHsKICAgIGlmIChkZWNrW2ldLnZhbCkgewogICAgICBwcmludGYoIiVjICVkXG4iLCBkZWNrW2ldLnN1aXQsIGRlY2tbaV0ubnVtYmVyKTsKICAgIH0KICB9CiAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKfQo=