Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- enum Dir {
- UP = 0,
- LEFT = 1,
- DOWN = 2,
- RIGHT = 3
- };
- typedef signed int si;
- struct Loc {
- si up, left, down, right;
- };
- vector<vector<Loc>> a;
- int n;
- boolean inRange(const )
- pair<si, si> run(const si& x_start, const si& y_start, long long s, Dir d) {
- si x = x_start;
- si y = y_start;
- switch (d) {
- case UP:
- x-=s;
- break;
- case LEFT:
- y-=s;
- break;
- case DOWN:
- x+=s;
- break;
- case RIGHT:
- y+=s;
- break;
- }
- return make_pair(x, y);
- }
- pair<si, si> run(const si& x_start, const si& y_start, long long s) {
- si x = x_start;
- si y = y_start;
- Dir d = UP;
- }
- int main() {
- si x_start;
- si y_start;
- long long s;
- cin >> n >> x_start >> y_start >> s;
- x_start--;
- y_start--;
- a.resize(n, vector <Loc> (n));
- for (int x = 0; x < n; i++) {
- for (int y = 0; y < n; i++) {
- char c;
- cin >> c;
- if (c == '#') {
- a[x][y] = {-1, -1, -1, -1};
- } else {
- si up = 0;
- si left = 0;
- if (x > 0) up = a[x - 1][y] + 1;
- if (y > 0) left = a[x][y - 1] + 1;
- a[x][y] = {up, left, 0, 0};
- }
- if (y == n - 1) {
- int right = a[x][n - 1];
- for (int j = n - 2; j >= 0; j--) {
- if (a[x][j].up == -1) right = -1;
- else {
- right++;
- a[x][j].right = right;
- }
- }
- }
- }
- }
- for (int y = 0; y < n; y++) {
- int down = a[n - 1][y];
- for (int x = n - 2; x >= 0; x--) {
- if (a[x][y].up == -1) down = -1;
- else {
- down++;
- a[x][y].down = down;
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment