Problem p00037 (C++) — buggy submission, verdict: Time Limit Exceeded

#include <bits/stdc++.h>
using namespace std;

double eps = 1e-10;

int main() {
  string s[16], ans("R");
  for (int i = 0; i < 9; ++i) {
    cin >> s[i];
  }
  int x = 0, y = 0;
  int d = 0; // 0:right, 1:down, 2:left, 3:up
  bool flag = false;
  while (1) {
    if (d == 0) {
      if (y >= 2 && s[y - 1][x + 1] == '1') {
        ans += 'U';
        y -= 1;
        x += 1;
        d = 3;
      } else if (s[y][x + 1] == '1') {
        ans += 'R';
        x += 1;
      }

      else if (s[y + 1][x + 1] == '1') {
        ans += 'D';
        x += 1;
        y += 1;
        d = 1;
      } else {
        ans += 'L';
        d = 2;
      }
    } else if (d == 1) {
      if (s[y + 1][x] == '1') {
        ans += 'R';
        y += 1;
        d = 0;
      } else if (s[y + 2][x] == '1') {
        ans += 'D';
        y += 2;
      } else if (s[y + 1][x - 1] == '1') {
        ans += 'L';
        x -= 1;
        y += 1;
        d = 2;
      } else {
        ans += 'U';
        d = 3;
      }
    } else if (d == 2) {
      if (s[y + 1][x] == '1') {
        ans += 'D';
        y += 1;
        d = 1;
      } else if (s[y][x - 1] == '1') {
        ans += 'L';
        x -= 1;
      } else if (y >= 2 && s[y - 1][x] == '1') {
        ans += 'U';
        y -= 1;
        d = 3;
      } else {
        ans += 'R';
        d = 0;
      }
    } else if (d == 3) {
      if (s[y - 1][x - 1] == '1') {
        ans += 'L';
        y -= 1;
        x -= 1;
        d = 2;
      } else if (y >= 3 && s[y - 2][x] == '1') {
        ans += 'U';
        y -= 2;
      } else if (s[y - 1][x] == '1') {
        y -= 1;
        if (x == 0 && y == 0)
          break;
        ans += 'R';
        d = 0;
      } else {
        ans += 'D';
        d = 1;
      }
    }
    /*if(x == 1 && y == 8 && flag)
            break;
    if(x == 1 && y == 8){
            flag = true;
            //break;
    }*/
    if (x == 0 && y == 0)
      break;
  }
  /*cout << s[8][3] << endl;
  cout << d << endl;*/
  cout << ans << endl;
  return 0;
}

Error: TLE

Fixed submission:

#include <bits/stdc++.h>
using namespace std;

double eps = 1e-10;

int main() {
  string s[16], ans("R");
  for (int i = 0; i < 9; ++i) {
    cin >> s[i];
  }
  int x = 0, y = 0;
  int d = 0; // 0:right, 1:down, 2:left, 3:up
  bool flag = false;
  while (1) {
    if (d == 0) {
      if (s[y][x + 1] == '1') {
        ans += 'R';
        x += 1;
      } else if (y >= 2 && s[y - 1][x + 1] == '1') {
        ans += 'U';
        y -= 1;
        x += 1;
        d = 3;
      } else if (s[y + 1][x + 1] == '1') {
        ans += 'D';
        x += 1;
        y += 1;
        d = 1;
      }
    } else if (d == 1) {
      if (s[y + 2][x] == '1') {
        ans += 'D';
        y += 2;
      } else if (s[y + 1][x + 1] == '1') {
        ans += 'R';
        x += 1;
        y += 1;
        d = 0;
      } else if (s[y + 1][x - 1] == '1') {
        ans += 'L';
        x -= 1;
        y += 1;
        d = 2;
      }
    } else if (d == 2) {
      if (s[y][x - 1] == '1') {
        ans += 'L';
        x -= 1;
      } else if (s[y + 1][x] == '1') {
        ans += 'D';
        y += 1;
        d = 1;
      } else if (y >= 2 && s[y - 1][x] == '1') {
        ans += 'U';
        y -= 1;
        d = 3;
      }
    } else if (d == 3) {
      if (y >= 3 && s[y - 2][x] == '1') {
        ans += 'U';
        y -= 2;
      } else if (s[y - 1][x] == '1') {
        y -= 1;
        if (x == 0 && y == 0)
          break;
        ans += 'R';
        d = 0;
      } else if (s[y - 1][x - 1] == '1') {
        ans += 'L';
        y -= 1;
        x -= 1;
        d = 2;
      }
    }
    /*if(x == 3 && y == 3 && flag)
            break;
    if(x == 3 && y == 3){
            flag = true;
            //break;
    }*/
    if (x == 0 && y == 0)
      break;
  }
  /*cout << s[3][3] << endl;
  cout << d << endl;*/
  cout << ans << endl;
  return 0;
}