pastebin

Paste Search Dynamic
Recent pastes
chessboard
  1. #pragma warning(disable: 4996)
  2.  
  3. #include <stdio.h>
  4. #include <stack>
  5. using namespace std;
  6.  
  7. bool chessboard[8][8];
  8.  
  9. void ClearChessboard()
  10. {
  11.         for (int a = 0; a < 8; ++a)
  12.         {
  13.                 for (int b = 0; b < 8; ++b)
  14.                 {
  15.                         chessboard[a][b] = false;
  16.                 }
  17.         }
  18. }
  19.  
  20. bool IsOnChessboard(int x, int y)
  21. {
  22.         return x >= 0 && x < 8 && y >= 0 && y < 8;
  23. }
  24.  
  25. bool IsColision(int pX, int pY, int x, int y)
  26. {
  27.         pX += x;
  28.         pY += y;
  29.  
  30.         while (IsOnChessboard(pX, pY))
  31.         {
  32.                 if (chessboard[pY][pX])
  33.                         return true;
  34.  
  35.                 pX += x;
  36.                 pY += y;
  37.         }
  38.  
  39.         return false;
  40. }
  41.  
  42. bool CheckChessboard(stack<int> stack)
  43. {
  44.         for (int y = 7; y >= 0; --y)
  45.         {
  46.                 int x = stack.top();
  47.                 stack.pop();
  48.  
  49.                 if( IsColision(x, y, -1, -1) ||
  50.                         IsColision(x, y,  0, -1) ||
  51.                         IsColision(x, y, +1, -1) ||
  52.                         IsColision(x, y, +1, +1) ||
  53.                         IsColision(x, y,  0, +1) ||
  54.                         IsColision(x, y, -1, +1))
  55.                         return false;
  56.         }
  57.  
  58.         return true;
  59. }
  60.  
  61. int main()
  62. {
  63.         int k;
  64.         scanf("%d", &k);
  65.  
  66.         for (int i = 0; i < k; ++i)
  67.         {
  68.                 ClearChessboard();
  69.                 stack<int> stack;
  70.  
  71.                 for (int y = 0; y < 8; ++y)
  72.                 {
  73.                         int x;
  74.                         scanf("%d", &x);
  75.                         x--;
  76.                         stack.push(x);
  77.                         chessboard[y][x] = true;
  78.                 }
  79.  
  80.                 if (CheckChessboard(stack))
  81.                         printf("TAK\n");
  82.                 else
  83.                         printf("NIE\n");
  84.         }
  85.  
  86.         return 0;
  87. }
Parsed in 0.008 seconds
comments powered by disqus