fork download
  1. #include <iostream>
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5. class Coordinates
  6. {
  7. public:
  8. int top;
  9. int bottom;
  10. int left;
  11. int right;
  12. };
  13. vector<pair<int,int>> findRobots (vector<vector<char>> grid,vector<int> jumps)
  14. {
  15. int rows = grid.size();
  16. int cols = grid[0].size();
  17. vector<pair<int,int>> results;
  18. vector<vector<Coordinates>> dp (rows,vector<Coordinates>(cols));
  19. // top and left
  20. for(int i=0;i<rows;i++)
  21. {
  22. for(int j=0;j<cols;j++)
  23. {
  24. if( j==0 || grid[i][j-1]=='X' )
  25. {
  26. dp[i][j].left=1;
  27. }
  28. else
  29. {
  30. dp[i][j].left= dp[i][j-1].left + 1;
  31. }
  32.  
  33. if(i==0 || grid[i-1][j]=='X' )
  34. {
  35. dp[i][j].top=1;
  36. }
  37. else
  38. {
  39. dp[i][j].top= dp[i-1][j].top + 1;
  40. }
  41. }
  42. }
  43.  
  44. // bottom right
  45.  
  46. for(int i=rows-1;i>=0;i--)
  47. {
  48. for(int j=cols-1;j>=0;j--)
  49. {
  50. if(j==cols-1 || grid[i][j+1]=='X' )
  51. {
  52. dp[i][j].right=1;
  53. }
  54. else
  55. {
  56. dp[i][j].right= dp[i][j+1].right + 1;
  57. }
  58.  
  59. if( i==rows-1 || grid[i+1][j]=='X' )
  60. {
  61. dp[i][j].bottom=1;
  62. }
  63. else
  64. {
  65. dp[i][j].bottom= dp[i+1][j].bottom + 1;
  66. }
  67. }
  68. }
  69.  
  70. int topV = jumps[1];
  71. int bottomV= jumps[2];
  72. int rightV = jumps[3];
  73. int leftV = jumps[0];
  74.  
  75. for(int i=0;i<rows;i++)
  76. {
  77. for(int j=0;j<cols;j++)
  78. {
  79. if(grid[i][j] == 'O' && dp[i][j].top == topV && dp[i][j].bottom == bottomV && dp[i][j] .left == leftV && dp[i][j].right == rightV)
  80. {
  81. results.push_back({i,j});
  82. }
  83.  
  84. }
  85. }
  86.  
  87.  
  88.  
  89. return results;
  90.  
  91. }
  92.  
  93. int main() {
  94. // your code goes here
  95. vector<vector<char>> grid = {{'O','E','E','E','X'},{'E','O','X','X','X'},{'E','E','E','E','E'},{'X','E','O','E','E'},{'X','E','X','E','X'}};
  96. vector<int> jumps = {2, 2, 4, 1};
  97. vector<pair<int,int>> results = findRobots(grid,jumps);
  98. for(auto it : results )
  99. {
  100. cout<<it.first<<","<<it.second<<"\n";
  101. }
  102. return 0;
  103. }
Success #stdin #stdout 0.01s 5316KB
stdin
Standard input is empty
stdout
1,1