比赛 2025.2.25 评测结果 AAAAWWWWWWWWWWWWWWWW
题目名称 过河卒 最终得分 20
用户昵称 flyfreem 运行时间 0.077 s
代码语言 C++ 内存使用 3.33 MiB
提交时间 2025-02-25 09:21:26
显示代码纯文本
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. // By flyfreemrn
  5. inline ll read(){
  6. ll x=0,f=1;
  7. char c=getchar();
  8. while(c<'0'||c>'9'){
  9. if(c=='-')f=-1;
  10. c=getchar();
  11. }
  12. while(c>='0'&&c<='9'){
  13. x=x*10+c-'0';
  14. c=getchar();
  15. }
  16. return x*f;
  17. }
  18. inline void write(ll x){
  19. if(x>9)write(x/10);
  20. putchar(x%10+'0');
  21. }
  22. ll addx[4]={0,-1,0,1},addy[4]={1,0,-1,0};
  23. ll T,type;
  24. ll n,m;
  25. char s[15][15];
  26. ll posx[5],posy[5];
  27. bool movable(ll x,ll y,ll ch){
  28. bool res=false;
  29. for(int i=0;i<4;i++){
  30. ll xz=x+addx[i],yz=y+addy[i];
  31. if(xz<1||yz<1||xz>n||yz>m||s[xz][yz]=='#')continue;
  32. if(((xz==posx[1]&&yz==posy[1])||(xz==posx[2]&&yz==posy[2])))continue;
  33. res=true;
  34. }
  35. return res;
  36. }
  37. void work(){
  38. cin>>n>>m;
  39. posx[1]=posx[2]=posx[0]=0;
  40. posy[1]=posy[2]=posy[0]=0;
  41. for(int i=1;i<=n;i++){
  42. for(int j=1;j<=m;j++){
  43. cin>>s[i][j];
  44. if(s[i][j]=='X')posx[0]=i,posy[0]=j;
  45. else if(s[i][j]=='O'){
  46. if(posx[1]||posy[1])posx[2]=i,posy[2]=j;
  47. else posx[1]=i,posy[1]=j;
  48. }
  49. }
  50. }
  51. if(type>=1&&type<=4){
  52. if(movable(posx[1],posy[1],1)||movable(posx[2],posy[2],1))cout<<"Tie\n";
  53. else cout<<"Black 0\n";
  54. }
  55. return;
  56. }
  57. int main(){
  58. freopen("zu.in","r",stdin);
  59. freopen("zu.out","w",stdout);
  60. type=read(),T=read();
  61. while(T--)work();
  62. return 0;
  63. }
  64.