Emag eht htiw Em Pleh
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 2842 | Accepted: 1887 |
Description
This problem is a reverse case of the
problem 2996. You are given the output of the problem H and your task is to find the corresponding input.
Input
according to output of
problem 2996.
Output
according to input of
problem 2996.
Sample Input
White: Ke1,Qd1,Ra1,Rh1,Bc1,Bf1,Nb1,a2,c2,d2,f2,g2,h2,a3,e4 Black: Ke8,Qd8,Ra8,Rh8,Bc8,Ng8,Nc6,a7,b7,c7,d7,e7,f7,h7,h6
Sample Output
+---+---+---+---+---+---+---+---+ |.r.|:::|.b.|:q:|.k.|:::|.n.|:r:| +---+---+---+---+---+---+---+---+ |:p:|.p.|:p:|.p.|:p:|.p.|:::|.p.| +---+---+---+---+---+---+---+---+ |...|:::|.n.|:::|...|:::|...|:p:| +---+---+---+---+---+---+---+---+ |:::|...|:::|...|:::|...|:::|...| +---+---+---+---+---+---+---+---+ |...|:::|...|:::|.P.|:::|...|:::| +---+---+---+---+---+---+---+---+ |:P:|...|:::|...|:::|...|:::|...| +---+---+---+---+---+---+---+---+ |.P.|:::|.P.|:P:|...|:P:|.P.|:P:| +---+---+---+---+---+---+---+---+ |:R:|.N.|:B:|.Q.|:K:|.B.|:::|.R.| +---+---+---+---+---+---+---+---+
题解:想清楚细节的处理,直接模拟就行了。
代码如下:
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
#include<string>
#include<stack>
#include<math.h>
#include<vector>
#include<set>
#include<map>
#define nn 110000
#define inff 0x7fffffff
#define eps 1e-8
#define mod 1000000007
typedef long long LL;
const LL inf64=LL(inff)*inff;
using namespace std;
char s1[nn],s2[nn];
map<pair<int,int>,char>ma;
int main()
{
gets(s1);
getchar();
gets(s2);
int i,j;
ma.clear();
int ls=strlen(s1);
char ix;
int x,y;
for(i=7;i<ls;i++)
{
if(s1[i]>='a'&&s1[i]<='z')
{
if(s1[i-1]==',')
ix='P';
else
ix=s1[i-1];
y=s1[i]-'a'+1;
x=s1[i+1]-'0';
x=9-x;
ma[make_pair(x,y)]=ix;
i++;
}
}
ls=strlen(s2);
for(i=7;i<ls;i++)
{
if(s2[i]>='a'&&s2[i]<='z')
{
if(s2[i-1]==',')
{
ix='p';
}
else
ix=s2[i-1]-'A'+'a';
y=s2[i]-'a'+1;
x=s2[i+1]-'0';
x=9-x;
ma[make_pair(x,y)]=ix;
i++;
}
}
for(i=0;i<=16;i++)
{
x=i/2+1;
for(j=1;j<=8;j++)
{
if(i%2==0)
{
printf("+---");
}
else
{
if((x+j)%2)
{
if(ma.count(make_pair(x,j)))
ix=ma[make_pair(x,j)];
else
ix=':';
printf("|:%c:",ix);
}
else
{
if(ma.count(make_pair(x,j)))
ix=ma[make_pair(x,j)];
else
ix='.';
printf("|.%c.",ix);
}
}
}
if(i%2==0)
puts("+");
else
puts("|");
}
return 0;
}