POJ-2996
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <iostream>
#include <utility>
#include <vector>
#include <cmath>
#define fi first
#define sc second
using namespace std;
typedef long long LL;
typedef pair<int,int>PII;
const int N=110;
char g[N][N];
int ne[6]={‘K‘,‘Q‘,‘R‘,‘B‘,‘N‘,‘P‘};
void solve()
{
vector <PII>v[1000];
for(int i=0;i<=16;i++)scanf("%s",&g[i]);
int hh=1;
for(int i=15;i>=1;i-=2)
{
int x=2,tt=0;
for(int j=x;j<=30;j+=4)
{
tt++;
if(g[i][j]==‘.‘||g[i][j]==‘:‘)continue;
v[g[i][j]].push_back({tt,hh});
}
hh++;
}
// k q r b n p
printf("White: ");
bool flag=false;
for(int i=0;i<6;i++)
{
int x=ne[i];
if(v[x].size()==0)continue;
if(!flag)
{
PII y=v[x][0];
//printf("%c%c%d",x,y.fi+‘a‘-1,8-y.sc+1);
if(x!=‘P‘)printf("%c%c%d",x,y.fi+‘a‘-1,y.sc);
else printf(",%c%d",y.fi+‘a‘-1,y.sc);
}
//for(auto y:v[x])
for(int j=0;j<v[x].size();j++)
{
if(!flag)
{
flag=true;continue;
}
if(x!=‘P‘)printf(",%c%c%d",x,v[x][j].fi+‘a‘-1,v[x][j].sc);
else printf(",%c%d",v[x][j].fi+‘a‘-1,v[x][j].sc);
}
}
puts("");printf("Black: ");
flag=false;
hh=1;
for(int i=0;i<200;i++)v[i].clear();
for(int i=1;i<=16;i+=2)
{
int x=2,tt=0;
for(int j=x;j<=30;j+=4)
{
tt++;
if(g[i][j]==‘.‘||g[i][j]==‘:‘)continue;
v[g[i][j]].push_back({tt,hh});
}
hh++;
}
for(int i=0;i<6;i++)
{
int x=ne[i]+32;
if(v[x].size()==0)continue;
if(!flag)
{
PII y=v[x][0];
//printf("%c%c%d",x,y.fi+‘a‘-1,8-y.sc+1);
if(x!=‘P‘+32)printf("%c%c%d",ne[i],y.fi+‘a‘-1,8-y.sc+1);
else printf(",%c%d",y.fi+‘a‘-1,8-y.sc+1);
}
for(int j=0;j<v[x].size();j++)
{
if(!flag)
{
flag=true;continue;
}
if(x!=‘P‘+32)printf(",%c%c%d",ne[i],v[x][j].fi+‘a‘-1,8-v[x][j].sc+1);
else printf(",%c%d",v[x][j].fi+‘a‘-1,8-v[x][j].sc+1);
}
}
puts("");
//printf("%d %d\n",‘a‘,‘A‘); 97 /65
}
int main()
{
int tests=1;
//scanf("%d",&tests);
while(tests--)
{
solve();
}
return 0;
}
POJ-2993
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <iostream>
#include <utility>
#include <vector>
#include <cmath>
#define fi first
#define sc second
using namespace std;
typedef long long LL;
typedef pair<int,int>PII;
const int N=110;
char g[N][N],w[N],b[N];
int ne[6]={‘K‘,‘Q‘,‘R‘,‘B‘,‘N‘,‘P‘};
void draw()
{
string s1="+---",s2="...",s3=":::";
int tt=0;
for(int i=0;i<=16;i++)
{
string s;
//string s="+---";
if(i&1)
{
tt++;
for(int j=1;j<=8;j++)
{
s+="|";
if(tt&1)
{
if(j&1)s+=s2;
else s+=s3;
}
else
{
if(j&1)s+=s3;
else s+=s2;
}
}
s+="|";
}
else
{
for(int j=1;j<=8;j++)s+=s1; s+="+";
}
for(int j=0;j<s.size();j++)g[i][j]=s[j];
//printf("%s\n",g[i]);
}
}
void solve()
{
vector <PII>v[1000];
draw();
gets(w);
//cout<<w[7];
v[w[7]].push_back({w[8]-‘a‘+1,w[9]-‘0‘});//5 1
//printf("%d %d\n",v[w[7]][0].fi,v[w[7]][0].sc);
for(int i=7;i<strlen(w);i++)
{
if(w[i]==‘,‘)
{
if(w[i+1]<‘a‘)
{
v[w[i+1]].push_back({w[i+2]-‘a‘+1,w[i+3]-‘0‘});
}
else
{
v[‘P‘].push_back({w[i+1]-‘a‘+1,w[i+2]-‘0‘});
}
}
}
//printf("%d....\n",v[‘P‘].size());
int hh=1;
for(int i=15;i>=1;i-=2)
{
int tt=0;
for(int j=2;j<=30;j+=4)
{
tt++;
for(int k=0;k<6;k++)
{
int x=ne[k];
for(int m=0;m<v[x].size();m++)
{
if(v[x][m].fi==tt&&v[x][m].sc==hh)
{
g[i][j]=x;
}
}
}
}
hh++;
}
for(int i=0;i<200;i++)v[i].clear();
gets(b);
v[b[7]].push_back({b[8]-‘a‘+1,b[9]-‘0‘});//5 8
//printf("%d %d\n",v[w[7]][0].fi,v[w[7]][0].sc);
for(int i=7;i<strlen(b);i++)
{
if(b[i]==‘,‘)
{
if(b[i+1]<‘a‘)
{
v[b[i+1]].push_back({b[i+2]-‘a‘+1,b[i+3]-‘0‘});
}
else
{
v[‘P‘].push_back({b[i+1]-‘a‘+1,b[i+2]-‘0‘});
}
}
}
hh=1;
for(int i=15;i>=1;i-=2)
{
int tt=0;
for(int j=2;j<=30;j+=4)
{
tt++;
for(int k=0;k<6;k++)
{
int x=ne[k];
for(int m=0;m<v[x].size();m++)
{
if(v[x][m].fi==tt&&v[x][m].sc==hh)
{
g[i][j]=char(x+32);
}
}
}
}
hh++;
}
for(int i=0;i<=16;i++)cout<<g[i]<<endl;
}
int main()
{
int tests=1;
scanf("%d",&tests);
while(tests--)
{
solve();
}
return 0;
}
POJ-2996 2993