POJ - 2993 - Emag eht htiw Em Pleh = 模拟
http://poj.org/problem?id=2993
POJ - 2996的输入输出相反题,直接暴力模拟出棋盘,然后暴力统计。
不知道会不会出现空的语句,反正直接判了。
跟焦作的模拟比起来都是小儿科。
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<map>
#include<set>
#include<stack>
#include<string>
#include<queue>
#include<vector>
using namespace std;
typedef long long ll;
char g[200][200];
void show() {
for(int i = 1; i <= 17; ++i) {
for(int j = 1; j <= 33; ++j) {
printf("%c", g[i][j]);
}
printf("\n");
}
}
int main() {
#ifdef Yinku
freopen("Yinku.in", "r", stdin);
#endif // Yinku
memset(g, ' ', sizeof(g));
for(int i = 1; i <= 9; ++i) {
for(int j = 1; j <= 9; ++j) {
g[(i - 1) * 2 + 1][(j - 1) * 4 + 1] = '+';
}
}
for(int i = 1; i <= 8; ++i) {
for(int j = 1; j <= 9; ++j) {
g[(i - 1) * 2 + 2][(j - 1) * 4 + 1] = '|';
}
}
for(int i = 1; i <= 9; ++i) {
for(int j = 1; j <= 8; ++j) {
g[(i - 1) * 2 + 1][(j - 1) * 4 + 2] = '-';
g[(i - 1) * 2 + 1][(j - 1) * 4 + 3] = '-';
g[(i - 1) * 2 + 1][(j - 1) * 4 + 4] = '-';
}
}
for(int i = 1; i <= 8; ++i) {
for(int j = 1; j <= 8; ++j) {
if(!((i + j) & 1)) {
g[(i - 1) * 2 + 2][(j - 1) * 4 + 2] = '.';
g[(i - 1) * 2 + 2][(j - 1) * 4 + 3] = '.';
g[(i - 1) * 2 + 2][(j - 1) * 4 + 4] = '.';
} else {
g[(i - 1) * 2 + 2][(j - 1) * 4 + 2] = ':';
g[(i - 1) * 2 + 2][(j - 1) * 4 + 3] = ':';
g[(i - 1) * 2 + 2][(j - 1) * 4 + 4] = ':';
}
}
}
//show();
string s;
cin >> s;
cin >> s;
if(s == "Black:") {
;
} else {
s += ',';
string tmp = "";
int n = s.length();
for(int i = 0; i < n; ++i) {
if(s[i] == ',') {
if(tmp.length() == 2) {
int j = (tmp[0] - 'a' + 1);
int i = 9 - (tmp[1] - '0');
g[(i - 1) * 2 + 2][(j - 1) * 4 + 3] = 'P';
} else {
int j = (tmp[1] - 'a' + 1);
int i = 9 - (tmp[2] - '0');
g[(i - 1) * 2 + 2][(j - 1) * 4 + 3] = tmp[0];
}
tmp = "";
} else {
tmp += s[i];
}
}
cin >> s;
cin >> s;
}
s += ',';
string tmp = "";
int n = s.length();
for(int i = 0; i < n; ++i) {
if(s[i] == ',') {
if(tmp.length() == 2) {
int j = (tmp[0] - 'a' + 1);
int i = 9 - (tmp[1] - '0');
g[(i - 1) * 2 + 2][(j - 1) * 4 + 3] = 'p';
} else {
int j = (tmp[1] - 'a' + 1);
int i = 9 - (tmp[2] - '0');
g[(i - 1) * 2 + 2][(j - 1) * 4 + 3] = char(tmp[0] + 32);
}
tmp = "";
} else {
tmp += s[i];
}
}
show();
}