Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 4063 | Accepted: 2601 |
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.|
+---+---+---+---+---+---+---+---+
就是把2996那道题倒着来一遍;
但是一直wa,过不了w过不了OTZ
希望有dalao指出哪里有bug;
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn=40;
char mp[maxn][maxn];
char str1[40];
char str2[40];
int main()
{
for(int i=0;i<8;i++)
{
for(int j=0;j<8;j++)
{
mp[2*i][4*j]='+';
mp[2*i+1][4*j]='|';
mp[2*i][4*j+1]='-';
mp[2*i][4*j+2]='-';
mp[2*i][4*j+3]='-';
}
mp[2*i][32]='+';
mp[2*i+1][32]='|';
mp[2*i][33]='\0';
if(i==7)
{
for(int j=0;j<8;j++)
{
mp[2*i+2][4*j]='+';
mp[2*i+2][4*j+1]='-';
mp[2*i+2][4*j+2]='-';
mp[2*i+2][4*j+3]='-';
}
mp[2*i+2][32]='+';
mp[2*i+2][33]='\0';
}
for(int j=0;j<8;j++)
{
if((i+j)%2==0)
{
mp[2*i+1][4*j+1]='.';
mp[2*i+1][4*j+2]='.';
mp[2*i+1][4*j+3]='.';
}
else
{
mp[2*i+1][4*j+1]=':';
mp[2*i+1][4*j+2]=':';
mp[2*i+1][4*j+3]=':';
}
}
mp[2*i+1][33]='\0';
}
scanf("%s%s",&str1,&str2);
if(strcmp(str1,"White:")==0)
{
for(int i=0;str2[i]!=0;)
{
if(str2[i]==','){i++;continue;}
if(str2[i]>='A'&&str2[i]<='Z')
{
int x=8-(str2[i+2]-'0');
int y=str2[i+1]-'a';
mp[2*x+1][4*y+2]=str2[i];
i+=3;
}
else
{
int x=8-(str2[i+1]-'0');
int y=str2[i]-'a';
mp[2*x+1][4*y+2]='P';
i+=2;
}
}
}
else
{
for(int i=0;str2[i]!=0;)
{
if(str2[i]==','){i++;continue;}
if(str2[i]>='A'&&str2[i]<='Z')
{
int x=8-(str2[i+2]-'0');
int y=str2[i+1]-'a';
mp[2*x+1][4*y+2]=str2[i]-'A'+'a';
i+=3;
}
else
{
int x=8-(str2[i+1]-'0');
int y=str2[i]-'a';
mp[2*x+1][4*y+2]='p';
i+=2;
}
}
}
scanf("%s%s",&str1,&str2);
if(strcmp(str1,"White:")==0)
{
for(int i=0;str2[i]!=0;)
{
if(str2[i]==','){i++;continue;}
if(str2[i]>='A'&&str2[i]<='Z')
{
int x=8-(str2[i+2]-'0');
int y=str2[i+1]-'a';
mp[2*x+1][4*y+2]=str2[i];
i+=3;
}
else
{
int x=8-(str2[i+1]-'0');
int y=str2[i]-'a';
mp[2*x+1][4*y+2]='P';
i+=2;
}
}
}
else
{
for(int i=0;str2[i]!=0;)
{
if(str2[i]==','){i++;continue;}
if(str2[i]>='A'&&str2[i]<='Z')
{
int x=8-(str2[i+2]-'0');
int y=str2[i+1]-'a';
mp[2*x+1][4*y+2]=str2[i]-'A'+'a';
i+=3;
}
else
{
int x=8-(str2[i+1]-'0');
int y=str2[i]-'a';
mp[2*x+1][4*y+2]='p';
i+=2;
}
}
}
for(int i=0;i<17;i++)
printf("%s\n",mp[i]);
return 0;
}