SHARE
TWEET

Untitled

a guest Aug 19th, 2019 64 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int dir[9][2]={{0,1},{1,0},{-1,0},{0,1},{0,-1},{-1,-1},{-1,1},{1,-1}};
  5.  
  6. struct node{
  7. ‚Äčint x,y,cnt = 0;
  8. }beg;
  9.  
  10.  
  11. enum
  12. {
  13. ‚ÄčEMPTY,  //0
  14. ‚ÄčBLACK,  //1
  15. ‚ÄčWHITE   //2
  16. };
  17.  
  18. #define ROWS 19
  19. #define COLS ROWS
  20.  
  21. char chess[ROWS][COLS];
  22. char mp[ROWS][COLS];
  23. int vis[ROWS][COLS];
  24.  
  25. enum
  26. {
  27. ‚ÄčBLACK_WIN,  //0
  28. ‚ÄčWHITE_WIN,  //1‚Äč
  29. ‚ÄčGO_ON       //2
  30. };
  31.  
  32. int dfs(int role)
  33. {
  34. ‚Äčint len=0;
  35. ‚Äčfor(int y=1;y<=ROWS;y++)
  36. ‚Äč{
  37. ‚Äčfor(int x=1;x<=COLS;x++)
  38. ‚Äč{
  39. ‚Äčif(chess[y][x]==role)
  40. ‚Äč{
  41. ‚Äčfor(int k=0;k<8;k++)
  42. ‚Äč{
  43. ‚Äčint ny=y;
  44. ‚Äčint nx=x;
  45. ‚Äčint h;
  46. ‚Äčfor(h=0;h<5;h++)
  47. ‚Äč{
  48. ‚Äčif(chess[ny][nx]!=role)
  49. ‚Äčbreak;
  50. ‚Äčnx+=dir[k][1];
  51. ‚Äčny+=dir[k][0];
  52. ‚Äč}
  53. ‚Äčlen=max(h,len);
  54. ‚Äč}
  55. ‚Äč}
  56. ‚Äč}
  57. ‚Äč}
  58. ‚Äčreturn len;
  59. }
  60.  
  61. int dfs_changlian(int x,int y,int role){
  62. ‚Äčint len=0,flag = 1;;
  63. ‚Äčfor(int k=0;k<8;k++)
  64. ‚Äč{
  65. ‚Äčint ny=y;
  66. ‚Äčint nx=x;
  67. ‚Äčint h;
  68. ‚Äčint cnt = 1,cntmax = 1;
  69. ‚Äčwhile(1)
  70. ‚Äč{‚Äč
  71. ‚Äčif(chess[ny][nx]!=role){
  72. ‚Äčif(chess[ny+dir[k][0]][nx+dir[k][1]] != role){
  73. ‚Äčbreak;
  74. ‚Äč}
  75. ‚Äč}
  76. ‚Äč
  77. ‚Äčnx+=dir[k][1];
  78. ‚Äčny+=dir[k][0];
  79. ‚Äčcnt++;
  80. ‚Äč}
  81. ‚Äčcntmax = max(cnt ,cntmax);
  82. ‚Äčif(cntmax >= 6)‚Äčreturn 1;
  83. ‚Äč}
  84. ‚Äčreturn 0;
  85. ‚Äč
  86. }
  87. int ban44(int x,int y){
  88. ‚Äč
  89. }
  90.  
  91.  
  92. int ban33(int x,int y){
  93. ‚Äč//33
  94. ‚Äčint num3 = 0;
  95.  
  96. ‚Äčint cnt = 1;
  97. ‚Äčint cnt1 = 0;
  98. ‚Äčint pe=0;
  99. ‚Äčfor(int i = 1;i <= 4;i ++){
  100. ‚Äčint tx = x-i;
  101. ‚Äčif(tx < 0 || tx > 19)continue;
  102. ‚Äčif(chess[tx][y] == 1) cnt++;
  103. ‚Äčelse if(chess[tx][y] == 2) break;
  104. ‚Äčelse {
  105. ‚Äčif(pe!=1){
  106. ‚Äčpe++;
  107. ‚Äč}
  108. ‚Äčelse{
  109. ‚Äčpe++;
  110. ‚Äčbreak;
  111. ‚Äč}
  112. ‚Äč}
  113. ‚Äč}
  114. ‚Äčif(pe)cnt1++;
  115. ‚Äčpe=0;
  116. ‚Äčfor(int i = 1;i <= 4; i++){
  117. ‚Äčint tx=x+i;
  118. ‚Äčif(tx > 19 || tx < 0)continue;
  119. ‚Äčif(chess[tx][y]==1) cnt++;
  120. ‚Äčelse if(chess[tx][y]==2)break;
  121. ‚Äčelse {
  122. ‚Äčif(pe!=1){
  123. ‚Äčpe++;
  124. ‚Äč}
  125. ‚Äčelse {
  126.                pe++;
  127.                break;
  128. ‚Äč}
  129. ‚Äč}
  130. ‚Äč}
  131. ‚Äčif(pe)cnt1++;
  132. ‚Äčif(cnt >= 3 && cnt1 == 2)num3++;
  133. ‚Äčcnt=1;cnt1=0;pe=0;
  134. ‚Äčfor(int i=1;i<=4;i++){
  135. ‚Äčint tx=x-i;
  136. ‚Äčint ty=y-i;
  137. ‚Äčif(tx > 19|| tx < 0||ty < 0||ty > 19)continue;
  138. ‚Äčif(chess[tx][ty]==1)cnt++;
  139. ‚Äčelse if(chess[tx][ty]==2)break;
  140. ‚Äčelse {
  141. ‚Äčif(pe!=1){
  142. ‚Äčpe++;
  143. ‚Äč}
  144. ‚Äčelse {
  145.                pe++;
  146.                break;
  147. ‚Äč}
  148.        }
  149. ‚Äč}
  150. ‚Äčif(pe)cnt1++;
  151. ‚Äčpe=0;
  152. ‚Äčfor(int i=1;i<=4;i++){
  153. ‚Äčint tx=x+i;
  154. ‚Äčint ty=y+i;
  155. ‚Äčif(tx > 19|| tx < 0||ty < 0||ty > 19)continue;
  156. ‚Äčif(chess[tx][ty]==1) cnt++;
  157. ‚Äčelse if(chess[tx][ty]==2) break;
  158. ‚Äčelse {
  159. ‚Äčif(pe!=1)pe++;
  160. ‚Äčelse {
  161.                pe++;
  162.                break;
  163. ‚Äč}
  164. ‚Äč}
  165. ‚Äč}
  166. ‚Äčif(pe)cnt1++;
  167. ‚Äčpe=0;
  168. ‚Äčif(cnt >= 3&& cnt1==2) num3++;
  169. ‚Äčcnt=1;cnt1=0;
  170. ‚Äčfor(int i=1;i<=4;i++){
  171. ‚Äčint tx=x-i;
  172. ‚Äčint ty=y+i;
  173. ‚Äčif(tx > 19|| tx < 0||ty < 0||ty > 19)continue;
  174. ‚Äčif(chess[tx][ty]==1) cnt++;
  175. ‚Äčelse if(chess[tx][ty]==2) break;
  176. ‚Äčelse {
  177. ‚Äčif(pe!=1)pe++;
  178. ‚Äčelse {
  179.                pe++;
  180.                break;
  181. ‚Äč}
  182. ‚Äč}
  183. ‚Äč}
  184. ‚Äčif(pe)cnt1++;
  185. ‚Äčpe=0;
  186. ‚Äčfor(int i=1;i<=4;i++){
  187. ‚Äčint tx=x+i;
  188. ‚Äčint ty=y-i;
  189. ‚Äčif(tx > 19|| tx < 0||ty < 0||ty > 19)continue;
  190. ‚Äčif(chess[tx][ty]==1) cnt++;
  191. ‚Äčelse if(chess[tx][ty]==2) break;
  192. ‚Äčelse {
  193. ‚Äčif(pe!=1){
  194. ‚Äčpe++;
  195. ‚Äč}
  196. ‚Äčelse {
  197.                pe++;
  198.                break;
  199. ‚Äč}
  200. ‚Äč}
  201. ‚Äč}
  202. ‚Äčif(pe)cnt1++;
  203. ‚Äčpe=0;
  204. ‚Äčif(cnt>=3&&cnt1==2)num3++;
  205. ‚Äčcnt1=0;cnt=1;
  206. ‚Äčfor(int i=1;i<=4;i++){
  207. ‚Äčint ty=y-i;
  208. ‚Äčif(ty> 19|| ty < 0)continue;
  209. ‚Äčif(chess[x][ty]==1) cnt++;
  210. ‚Äčelse if(chess[x][ty]==2) break;
  211. ‚Äčelse {
  212. ‚Äčif(pe!=1){
  213. ‚Äčpe++;
  214. ‚Äč}
  215. ‚Äčelse {
  216.                pe++;
  217.                break;
  218. ‚Äč}
  219. ‚Äč}
  220. ‚Äč}
  221. ‚Äčif(pe)cnt1++;
  222. ‚Äčpe=0;
  223. ‚Äčfor(int i=1;i<=4;i++){
  224. ‚Äčint ty=y-i;
  225. ‚Äčif(ty> 19|| ty < 0)continue;
  226. ‚Äčif(chess[x][ty]==1) cnt++;
  227. ‚Äčelse if(chess[x][ty]==2) break;
  228. ‚Äčelse {
  229. ‚Äčif(pe!=1){
  230. ‚Äčpe++;
  231. ‚Äč}
  232. ‚Äčelse {
  233.                pe++;
  234.                break;
  235. ‚Äč}
  236. ‚Äč}
  237. ‚Äč}
  238. ‚Äčif(pe)cnt1++;
  239. ‚Äčpe=0;
  240. ‚Äčif(cnt>=3&&cnt1==2)num3++;
  241. ‚Äčif(num3>=1){
  242. ‚Äčreturn 1;
  243. ‚Äč}
  244. ‚Äčelse return 0;
  245. }
  246.  
  247.  
  248. int putChess(int role, int row, int col)
  249. {
  250.  
  251. ‚Äčchess[row][col] = role;
  252. ‚Äčint flag1 = dfs(role);
  253. ‚Äčif(flag1 >= 5){
  254. ‚Äčif(role == 2)‚Äčreturn WHITE_WIN;
  255. ‚Äčelse ‚Äčreturn BLACK_WIN;
  256. ‚Äč}
  257. ‚Äčelse{
  258. ‚Äčif(role == 1){
  259. ‚Äčint flag2 = ban33(row,col);
  260. ‚Äčint flag3 = ban44(row,col);
  261. ‚Äčint flag4 = dfs_changlian(row,col,role);
  262. ‚Äč
  263. ‚Äčif(!flag2&&!flag3&&!flag4){
  264. ‚Äčreturn GO_ON;
  265. ‚Äč}
  266. ‚Äčelse return WHITE_WIN;
  267. ‚Äč
  268. ‚Äč}
  269. ‚Äč}‚Äč
  270.    return GO_ON;
  271. }
  272.  
  273. int main()
  274. {
  275. ‚Äčfreopen(‚ÄĚ15.txt‚Äú,‚ÄĚr‚Äú,stdin);
  276. ‚Äčfreopen(‚ÄĚout.txt‚Äú,‚ÄĚw‚Äú,stdout);
  277.    char line[20];
  278.    char *str = NULL;
  279.    int ret = GO_ON;
  280.    do {
  281.        str = fgets(line, 20, stdin);
  282. ‚Äčif(str == NULL)break;
  283. ‚Äč
  284.        int role, row, col;
  285.        sscanf(line, ‚ÄĚ%d %d %d‚Äú, &role, &row, &col);
  286.        ret = putChess(role, row-1, col-1);  ‚Äč
  287. ‚Äč} while(ret == GO_ON);
  288.    
  289.    if(ret == BLACK_WIN)
  290.       printf(‚ÄĚblack win‚Äú);
  291.    else if(ret == WHITE_WIN)
  292.        printf(‚ÄĚwhite win‚Äú);    
  293. ‚Äčelse
  294. ‚Äčprintf(‚ÄĚnot end‚Äú);  
  295.    
  296.    return 0;
  297. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top