Advertisement
Guest User

Untitled

a guest
Dec 15th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.37 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <cstdio>
  4. #include <vector>
  5. #include <cstring>
  6. #include <ctime>
  7. #include <cassert>
  8. #include <algorithm>
  9. #include <fstream>
  10.  
  11.  
  12. using namespace std;
  13.  
  14. int n;
  15. int all, DoSega=0;
  16. int counter = 1;
  17. int k;
  18. int x1;
  19. int Y1;
  20. int x2;
  21. int y2;
  22. int a[1000][1000];
  23.  
  24. int solution()
  25. {
  26. int tempX = x1;
  27. int tempY = Y1;
  28. if (tempX - 2 >= 0 && tempY - 1 >= 0 && a[tempX-2][tempY-1]!=-2)
  29. a[tempX - 2][tempY - 1] = 1;
  30. if (tempX - 2 >= 0 && tempY + 1 >= 0 && a[tempX - 2][tempY + 1] != -2)
  31. a[tempX - 2][tempY + 1] = 1;
  32. if (tempX + 2 >= 0 && tempY + 1 >= 0 && a[tempX + 2][tempY + 1] != -2)
  33. a[tempX + 2][tempY + 1] = 1;
  34. if (tempX + 2 >= 0 && tempY - 1 >= 0 && a[tempX + 2][tempY - 1] != -2)
  35. a[tempX - 2][tempY - 1] = 1;
  36.  
  37. while (DoSega<all)
  38. {
  39. for (int i = 0; i < n; i++)
  40. {
  41. for (int z = 0; z < n; z++)
  42. {
  43. if (i == x2 && z == y2)
  44. {
  45. return counter;
  46. }
  47. if (a[i][z] == counter)
  48. {
  49. tempX = i;
  50. tempY = z;
  51. if (tempX - 2 >= 0 && tempY - 1 >= 0 && a[tempX - 2][tempY - 1] != -2)
  52. if (a[tempX - 2][tempY - 1] > counter)
  53. a[tempX - 2][tempY - 1] = counter;
  54. if (tempX - 2 >= 0 && tempY + 1 <= n && a[tempX - 2][tempY + 1] != -2)
  55. if(a[tempX - 2][tempY + 1] > counter)
  56. a[tempX - 2][tempY + 1] = counter;
  57. if (tempX + 2 <= n && tempY + 1 <= n && a[tempX + 2][tempY + 1] != -2)
  58. if(a[tempX + 2][tempY + 1] > counter)
  59. a[tempX + 2][tempY + 1] = counter;
  60. if (tempX + 2 <= n && tempY - 1 >= 0 && a[tempX + 2][tempY - 1] != -2)
  61. if(a[tempX - 2][tempY - 1]>counter)
  62. a[tempX - 2][tempY - 1] = counter;
  63. }
  64. }
  65. }
  66. counter++;
  67. }
  68. }
  69.  
  70. int main()
  71. {
  72. ifstream myfile;
  73. myfile.open("chess.in");
  74.  
  75. n << myfile.get();
  76. k << myfile.get();
  77. x1 << myfile.get();
  78. Y1 << myfile.get();
  79. x2 << myfile.get();
  80. y2 << myfile.get();
  81.  
  82.  
  83. for (int i = 0; i < n; i++) {
  84. for (int z = 0; z < n; z++)
  85. {
  86. a[i][z] = myfile.get();
  87. if (a[i][z] == 1)
  88. {
  89. a[i][z] = -2;
  90. DoSega++;
  91. }
  92. else
  93. {
  94. a[i][z] = -1;
  95. }
  96. }
  97. }
  98. myfile.close();
  99. ofstream myfile2;
  100. myfile2.open("chess.out");
  101. all = n * n;
  102. a[x1][Y1] = 0;
  103. DoSega++;
  104.  
  105.  
  106. int value = solution();
  107. if (value <= k && (k-value)%2==0)
  108. {
  109. myfile2 << "Yes\n";
  110.  
  111. }
  112. else
  113. {
  114. myfile2 << "No\n";
  115. }
  116.  
  117. myfile2.close();
  118. return 0;
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement