alexjercan/bugnet huggingface dataset:
Problem p02384 (C++) — buggy submission, verdict: Runtime Error

#include <bits/stdc++.h>
using namespace std;
#define int long long // <-----!!!!!!!!!!!!!!!!!!!

#define rep(i, n) for (int i = 0; i < (n); i++)
#define rep2(i, a, b) for (int i = (a); i < (b); i++)
#define rrep(i, n) for (int i = (n)-1; i >= 0; i--)
#define rrep2(i, a, b) for (int i = (b)-1; i >= (a); i--)
#define all(a) (a).begin(), (a).end()

typedef long long ll;
typedef pair<int, int> Pii;
typedef tuple<int, int, int> TUPLE;
typedef vector<int> V;
typedef vector<V> VV;
typedef vector<VV> VVV;
typedef vector<vector<int>> Graph;
const int inf = 1e9;
const int mod = 1e9 + 7;

signed main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(0);

  V v(6);
  map<int, int> mp;
  rep(i, 6) {
    cin >> v[i];
    mp[v[i]] = i + 1;
  }
  int q;
  cin >> q;
  rep(i, q) {
    int x, y;
    cin >> x >> y;
    x = mp[x], y = mp[y];
    bool swapped = false;
    if (x > y) {
      swap(x, y);
      swapped = true;
    }
    int ans = -1;
    if (x == 1 && y == 2)
      ans = 3;
    if (x == 1 && y == 3)
      ans = 5;
    if (x == 1 && y == 4)
      ans = 2;
    if (x == 1 && y == 5)
      ans = 4;
    if (x == 2 && y == 3)
      ans = 1;
    if (x == 2 && y == 4)
      ans = 6;
    if (x == 2 && y == 6)
      ans = 3;
    if (x == 3 && y == 5)
      ans = 1;
    if (x == 3 && y == 6)
      ans = 5;
    if (x == 4 && y == 5)
      ans = 6;
    if (x == 4 && y == 6)
      ans = 2;
    if (x == 5 && y == 6)
      ans = 4;
    assert(ans != -1);
    if (swapped)
      ans = 7 - ans;
    cout << v[ans - 1] << endl;
  }
}

Error: 0

Fixed submission:

#include <bits/stdc++.h>
using namespace std;
#define int long long // <-----!!!!!!!!!!!!!!!!!!!

#define rep(i, n) for (int i = 0; i < (n); i++)
#define rep2(i, a, b) for (int i = (a); i < (b); i++)
#define rrep(i, n) for (int i = (n)-1; i >= 0; i--)
#define rrep2(i, a, b) for (int i = (b)-1; i >= (a); i--)
#define all(a) (a).begin(), (a).end()

typedef long long ll;
typedef pair<int, int> Pii;
typedef tuple<int, int, int> TUPLE;
typedef vector<int> V;
typedef vector<V> VV;
typedef vector<VV> VVV;
typedef vector<vector<int>> Graph;
const int inf = 1e9;
const int mod = 1e9 + 7;

signed main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(0);

  V v(6);
  rep(i, 6) cin >> v[i];
  int q;
  cin >> q;
  rep(i, q) {
    int x, y;
    cin >> x >> y;
    bool swapped = false;
    if (x > y) {
      swap(x, y);
      swapped = true;
    }
    int ans = -1;
    if (x == 1 && y == 2)
      ans = 3;
    if (x == 1 && y == 3)
      ans = 5;
    if (x == 1 && y == 4)
      ans = 2;
    if (x == 1 && y == 5)
      ans = 4;
    if (x == 2 && y == 3)
      ans = 1;
    if (x == 2 && y == 4)
      ans = 6;
    if (x == 2 && y == 6)
      ans = 3;
    if (x == 3 && y == 5)
      ans = 1;
    if (x == 3 && y == 6)
      ans = 5;
    if (x == 4 && y == 5)
      ans = 6;
    if (x == 4 && y == 6)
      ans = 2;
    if (x == 5 && y == 6)
      ans = 4;
    assert(ans != -1);
    if (swapped)
      ans = 7 - ans;
    cout << v[ans - 1] << endl;
  }
}
Problem p02385 (C++) — buggy submission, verdict: Time Limit Exceeded

#include <iostream>
#include <string>

using namespace std;

class Dice {
public:
  int a[6], tmp, i;

  Dice(int input[6]) {
    for (i = 0; i < 6; i++) {
      a[i] = input[i];
    }
  }

  void e() {
    tmp = a[2];
    a[2] = a[0];
    a[0] = a[3];
    a[3] = a[5];
    a[5] = tmp;
  }

  void n() {
    tmp = a[0];
    a[0] = a[1];
    a[1] = a[5];
    a[5] = a[4];
    a[4] = tmp;
  }

  void w() {
    tmp = a[0];
    a[0] = a[2];
    a[2] = a[5];
    a[5] = a[3];
    a[3] = tmp;
  }

  void s() {
    tmp = a[0];
    a[0] = a[4];
    a[4] = a[5];
    a[5] = a[1];
    a[1] = tmp;
  }
  bool ismatch(int a2[6]) {
    int count1 = 0, count2 = 0;
    while (1) {
      if (a[0] == a2[0]) {
        count2 = 0;
        while (1) {
          if (a[1] == a2[1]) {
            if (a[2] == a2[2] && a[3] == a2[3] && a[4] == a2[4] &&
                a[5] == a2[5])
              return true;
            else
              break;
          }
          e();
          n();
          w();
          count2++;
          if (count2 >= 4)
            break;
        }
      }
      if (count1 < 3)
        e();
      else
        n();
      count1++;
      if (count1 > 6)
        return false;
    }
  }
};

int main(void) {
  int i, in[6];
  for (i = 0; i < 6; i++)
    cin >> in[i];
  Dice d1(in);
  for (i = 0; i < 6; i++)
    cin >> in[i];
  Dice d2(in);
  if (d1.ismatch(d2.a))
    cout << "Yes" << endl;
  else
    cout << "No" << endl;
  return 0;
}

Error: TLE

Fixed submission:

#include <iostream>
#include <string>

using namespace std;

class Dice {
public:
  int a[6], tmp, i;

  Dice(int input[6]) {
    for (i = 0; i < 6; i++) {
      a[i] = input[i];
    }
  }

  void e() {
    tmp = a[2];
    a[2] = a[0];
    a[0] = a[3];
    a[3] = a[5];
    a[5] = tmp;
  }

  void n() {
    tmp = a[0];
    a[0] = a[1];
    a[1] = a[5];
    a[5] = a[4];
    a[4] = tmp;
  }

  void w() {
    tmp = a[0];
    a[0] = a[2];
    a[2] = a[5];
    a[5] = a[3];
    a[3] = tmp;
  }

  void s() {
    tmp = a[0];
    a[0] = a[4];
    a[4] = a[5];
    a[5] = a[1];
    a[1] = tmp;
  }
  bool ismatch(int a2[6]) {
    int count = 0;
    while (!(a[0] == a2[0])) {
      if (count % 2 == 0)
        e();
      else
        n();
      count++;
    }
    while (!(a[1] == a2[1])) {
      e();
      n();
      w();
    }
    if (a[2] == a2[2] && a[3] == a2[3] && a[4] == a2[4] && a[5] == a2[5])
      return true;
    else
      return false;
  }
};

int main(void) {
  int i, in[6];
  for (i = 0; i < 6; i++)
    cin >> in[i];
  Dice d1(in);
  for (i = 0; i < 6; i++)
    cin >> in[i];
  Dice d2(in);
  if (d1.ismatch(d2.a))
    cout << "Yes" << endl;
  else
    cout << "No" << endl;
  return 0;
}
Problem p02385 (C++) — buggy submission, verdict: Time Limit Exceeded

#include <cstdio>
#include <iostream>

using namespace std;

struct dice {
  int q1, q2, q3, q4, q5, q6;
};

void mN(dice &d) {
  int tmp = d.q1;
  d.q1 = d.q2;
  d.q2 = d.q6;
  d.q6 = d.q5;
  d.q5 = tmp;
}

void mE(dice &d) {
  int tmp = d.q1;
  d.q1 = d.q4;
  d.q4 = d.q6;
  d.q6 = d.q3;
  d.q3 = tmp;
}
void mW(dice &d) {
  int tmp = d.q1;
  d.q1 = d.q3;
  d.q3 = d.q6;
  d.q6 = d.q4;
  d.q4 = tmp;
}
void mS(dice &d) {
  int tmp = d.q1;
  d.q1 = d.q5;
  d.q5 = d.q6;
  d.q6 = d.q2;
  d.q2 = tmp;
}

void spin(dice &d) {
  int tmp = d.q2;
  d.q2 = d.q3;
  d.q3 = d.q5;
  d.q5 = d.q4;
  d.q4 = tmp;
}

int main() {
  dice y, z;
  bool flag = false;

  scanf(" %d %d %d %d %d %d", &y.q1, &y.q2, &y.q3, &y.q4, &y.q5, &y.q6);
  scanf(" %d %d %d %d %d %d", &z.q1, &z.q2, &z.q3, &z.q4, &z.q5, &z.q6);

  for (int i = 0; i < 4; ++i) {
    for (int j = 0; j < 4; ++j) {
      // printf("now: %d %d %d %d %d %d\\n", y.q1, y.q2, y.q3, y.q4, y.q5, y.q6);

      if (y.q1 == z.q1 && y.q2 == z.q2 && y.q3 == z.q3 && y.q4 == z.q4 &&
          y.q5 == z.q5 && y.q6 == z.q6) {
        flag = true;
        break;
      }
      spin(y);
    }
    if (flag)
      break;
    mN(y);
  }

  mE(y);

  // printf("now: %d %d %d %d %d %d\\n", y.q1, y.q2, y.q3, y.q4, y.q5, y.q6);

  for (int i = 0; i < 4; ++i) {
    for (int j = 0; j < 4; ++j) {
      // printf("now: %d %d %d %d %d %d\\n", y.q1, y.q2, y.q3, y.q4, y.q5, y.q6);

      if (y.q1 == z.q1 && y.q2 == z.q2 && y.q3 == z.q3 && y.q4 == z.q4 &&
          y.q5 == z.q5 && y.q6 == z.q6) {
        flag = true;
        break;
      }
      spin(y);
    }
    if (flag)
      break;
    mN(y);
  }

  if (flag)
    printf("Yes\\n");
  else
    printf("No\\n");

  return 0;
}

Error: TLE

Fixed submission:

#include <cstdio>
#include <iostream>

using namespace std;

struct dice {
  int q1, q2, q3, q4, q5, q6;
};

void mN(dice &d) {
  int tmp = d.q1;
  d.q1 = d.q2;
  d.q2 = d.q6;
  d.q6 = d.q5;
  d.q5 = tmp;
}

void mE(dice &d) {
  int tmp = d.q1;
  d.q1 = d.q4;
  d.q4 = d.q6;
  d.q6 = d.q3;
  d.q3 = tmp;
}
void mW(dice &d) {
  int tmp = d.q1;
  d.q1 = d.q3;
  d.q3 = d.q6;
  d.q6 = d.q4;
  d.q4 = tmp;
}
void mS(dice &d) {
  int tmp = d.q1;
  d.q1 = d.q5;
  d.q5 = d.q6;
  d.q6 = d.q2;
  d.q2 = tmp;
}

void spin(dice &d) {
  int tmp = d.q2;
  d.q2 = d.q3;
  d.q3 = d.q5;
  d.q5 = d.q4;
  d.q4 = tmp;
}

int main() {
  dice y, z;

  scanf(" %d %d %d %d %d %d", &y.q1, &y.q2, &y.q3, &y.q4, &y.q5, &y.q6);
  scanf(" %d %d %d %d %d %d", &z.q1, &z.q2, &z.q3, &z.q4, &z.q5, &z.q6);

  if (y.q1 == z.q3 || y.q1 == z.q4)
    mE(y);
  while (y.q1 != z.q1)
    mN(y);
  while (y.q2 != z.q2)
    spin(y);

  if (y.q1 == z.q1 && y.q2 == z.q2 && y.q3 == z.q3 && y.q4 == z.q4 &&
      y.q5 == z.q5 && y.q6 == z.q6)
    printf("Yes\\n");
  else
    printf("No\\n");

  return 0;
}
Problem p02385 (C++) — buggy submission, verdict: Time Limit Exceeded

#include <iostream>
using namespace std;

class dice {

public:
  int _1, _2, _3, _4, _5, _6, sus;

  void moveN() {
    sus = _1;
    _1 = _2;
    _2 = _6;
    _6 = _5;
    _5 = sus;
  }

  void moveE() {
    sus = _1;
    _1 = _4;
    _4 = _6;
    _6 = _3;
    _3 = sus;
  }

  void moveW() {
    sus = _1;
    _1 = _3;
    _3 = _6;
    _6 = _4;
    _4 = sus;
  }

  void moveS() {
    sus = _1;
    _1 = _5;
    _5 = _6;
    _6 = _2;
    _2 = sus;
  }

  void spin() {
    sus = _2;
    _2 = _3;
    _3 = _5;
    _5 = _4;
    _4 = sus;
  }
};

int main() {

  dice d1;
  dice d2;

  int i;

  cin >> d1._1 >> d1._2 >> d1._3 >> d1._4 >> d1._5 >> d1._6;
  cin >> d2._1 >> d2._2 >> d2._3 >> d2._4 >> d2._5 >> d2._6;

  if (d1._3 == d2._1 || d1._4 == d2._1)
    d1.moveE();
  for (i = 0; i < 4; i++) {
    if (d2._1 == d1._1)
      break;
    d1.moveN();
  }
  for (i = 0; i < 4; i++) {
    if (d2._2 == d1._2)
      break;
    d1.spin();
  }

  if (d1._1 == d2._1 && d1._2 == d2._2 && d1._3 == d2._3 && d1._4 == d2._4 &&
      d1._5 == d2._5 && d1._6 == d2._6)
    cout << "Yes" << endl;
  else
    cout << "No" << endl;

  return 0;
}

Error: TLE

Fixed submission:

#include <iostream>
using namespace std;

class dice {

public:
  int _1, _2, _3, _4, _5, _6, sus;

  void moveN() {
    sus = _1;
    _1 = _2;
    _2 = _6;
    _6 = _5;
    _5 = sus;
  }

  void moveE() {
    sus = _1;
    _1 = _4;
    _4 = _6;
    _6 = _3;
    _3 = sus;
  }

  void moveW() {
    sus = _1;
    _1 = _3;
    _3 = _6;
    _6 = _4;
    _4 = sus;
  }

  void moveS() {
    sus = _1;
    _1 = _5;
    _5 = _6;
    _6 = _2;
    _2 = sus;
  }

  void spin() {
    sus = _2;
    _2 = _3;
    _3 = _5;
    _5 = _4;
    _4 = sus;
  }
};

int main() {

  dice d1;
  dice d2;

  int i;

  cin >> d1._1 >> d1._2 >> d1._3 >> d1._4 >> d1._5 >> d1._6;
  cin >> d2._1 >> d2._2 >> d2._3 >> d2._4 >> d2._5 >> d2._6;

  if (d1._3 == d2._1 || d1._4 == d2._1)
    d1.moveE();
  for (i = 0; i < 4; i++) {
    if (d2._1 == d1._1)
      break;
    d1.moveN();
  }
  for (i = 0; i < 4 || d2._2 != d1._2; i++) {
    if (d2._2 == d1._2)
      break;
    d1.spin();
  }

  if (d1._1 == d2._1 && d1._2 == d2._2 && d1._3 == d2._3 && d1._4 == d2._4 &&
      d1._5 == d2._5 && d1._6 == d2._6)
    cout << "Yes" << endl;
  else
    cout << "No" << endl;

  return 0;
}
Problem p02385 (C++) — buggy submission, verdict: Runtime Error

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

int main() {
  int d1[7], d2[7];
  scanf("%d %d %d %d %d %d", &d1[0], &d1[1], &d1[2], &d1[3], &d1[4], &d1[5]);
  scanf("%d %d %d %d %d %d", &d2[0], &d2[1], &d2[2], &d2[3], &d2[4], &d2[5]);

  for (int i = 0; i < 4; i++) {
    int tmp1 = d1[0];
    d1[0] = d1[2];
    d1[2] = d1[5];
    d1[5] = d1[3];
    d1[3] = tmp1;
    for (int j = 0; j < 4; j++) {
      int tmp2 = d1[0];
      d1[0] = d1[1];
      d1[1] = d1[5];
      d1[5] = d1[4];
      d1[4] = tmp2;
      for (int k = 0; k < 4; k++) {
        int tmp3 = d1[1];
        d1[1] = d1[2];
        d1[2] = d1[4];
        d1[4] = d1[3];
        d1[3] = tmp3;
        int chk = 0;
        for (int p = 0; p < 6; p++) {
          if (d1[p] != d2[p]) {
            break;
          } else {
            chk++;
          }
          if (chk == 6) {
            printf("Yes\\n");
            return 0;
          }
        }
      }
    }
  }
  printf("No\\n");
  return 0;
}

Error: 1

Fixed submission:

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

int main() {
  int d1[7], d2[7];
  scanf("%d %d %d %d %d %d", &d1[0], &d1[1], &d1[2], &d1[3], &d1[4], &d1[5]);
  scanf("%d %d %d %d %d %d", &d2[0], &d2[1], &d2[2], &d2[3], &d2[4], &d2[5]);

  for (int i = 0; i < 4; i++) {
    int tmp1 = d1[0];
    d1[0] = d1[2];
    d1[2] = d1[5];
    d1[5] = d1[3];
    d1[3] = tmp1;
    for (int j = 0; j < 4; j++) {
      int tmp2 = d1[0];
      d1[0] = d1[1];
      d1[1] = d1[5];
      d1[5] = d1[4];
      d1[4] = tmp2;
      for (int k = 0; k < 4; k++) {
        int tmp3 = d1[1];
        d1[1] = d1[2];
        d1[2] = d1[4];
        d1[4] = d1[3];
        d1[3] = tmp3;
        int chk = 0;
        for (int p = 0; p < 6; p++) {
          if (d1[p] != d2[p]) {
            break;
          } else {
            chk++;
          }
          if (chk == 6) {
            printf("Yes\\n");
            return 1;
          }
        }
      }
    }
  }
  printf("No\\n");
  return 0;
}
Problem p02385 (C++) — buggy submission, verdict: Time Limit Exceeded

#include <algorithm>
#include <iostream>

using namespace std;

void dice3() {
  int d1, d2, d3, d4, d5, d6;
  cin >> d1 >> d2 >> d3 >> d4 >> d5 >> d6;

  int e1, e2, e3, e4, e5, e6;
  cin >> e1 >> e2 >> e3 >> e4 >> e5 >> e6;

  int tmp;
  for (int i = 0; i < 4; i++) {
    tmp = d1;
    d1 = d2;
    d2 = d6;
    d6 = d5;
    d5 = tmp; // N

    for (int i = 0; i < 4; i++) {
      if (d1 == e1 and d2 == e2 and d3 == e3 and d4 == e4 and d5 == e5 and
          d6 == e6) {
        cout << "Yes" << endl;
        return;
      }
      tmp = d2;
      d2 = d3;
      d3 = d5;
      d5 = d4;
      d4 = tmp; // spin
    }
  }
  tmp = d1;
  d1 = d4;
  d4 = d6;
  d6 = d3;
  d3 = tmp; // E
  for (int i = 0; i < 4; i++) {
    if (d1 == e1 and d2 == e2 and d3 == e3 and d4 == e4 and d5 == e5 and
        d6 == e6) {
      cout << "Yes" << endl;
      return;
    }
    tmp = d2;
    d2 = d3;
    d3 = d5;
    d5 = d4;
    d4 = tmp; // spin
  }
  tmp = d1;
  d1 = d4;
  d4 = d6;
  d6 = d3;
  d3 = tmp; // E
  tmp = d1;
  d1 = d4;
  d4 = d6;
  d6 = d3;
  d3 = tmp; // E
  for (int i = 0; i < 4; i++) {
    if (d1 == e1 and d2 == e2 and d3 == e3 and d4 == e4 and d5 == e5 and
        d6 == e6) {
      cout << "Yes" << endl;
      return;
    }
    tmp = d2;
    d2 = d3;
    d3 = d5;
    d5 = d4;
    d4 = tmp; // spin
  }
  cout << "No" << endl;
}

int main() {
  dice3();
  return 0;
}

Error: TLE

Fixed submission:

#include <algorithm>
#include <iostream>

using namespace std;

void dice3() {
  int d1, d2, d3, d4, d5, d6;
  cin >> d1 >> d2 >> d3 >> d4 >> d5 >> d6;

  int e1, e2, e3, e4, e5, e6;
  cin >> e1 >> e2 >> e3 >> e4 >> e5 >> e6;

  int tmp;
  while (true) {
    if (d1 == e1)
      break;
    tmp = d1;
    d1 = d4;
    d4 = d6;
    d6 = d3;
    d3 = tmp; // E
    if (d1 == e1)
      break;
    tmp = d1;
    d1 = d2;
    d2 = d6;
    d6 = d5;
    d5 = tmp; // N
  }
  while (true) {
    if (d2 == e2)
      break;
    tmp = d2;
    d2 = d3;
    d3 = d5;
    d5 = d4;
    d4 = tmp;
  }

  if (d3 == e3 and d4 == e4 and d5 == e5 and d6 == e6) {
    cout << "Yes" << endl;
  } else {
    cout << "No" << endl;
  }
}
int main() {
  dice3();
  return 0;
}
Problem p02385 (C++) — buggy submission, verdict: Runtime Error

#include <algorithm>
#include <iostream>
#include <string>

using namespace std;

int dice(int a, int b) {
  int count = 0;
  string tpat[3];
  tpat[0] = "12651";
  tpat[1] = "23542";
  tpat[2] = "13641";
  int ret[3];
  ret[0] = 3;
  ret[1] = 1;
  ret[2] = 5;
  for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 4; j++) {
      if (tpat[i][j] - '0' == a && tpat[i][j + 1] - '0' == b) {
        return ret[i];
      }
    }
  }
  tpat[0] = "15621";
  tpat[1] = "24532";
  tpat[2] = "14631";
  for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 4; j++) {
      if (tpat[i][j] - '0' == a && tpat[i][j + 1] - '0' == b) {
        return 7 - ret[i];
      }
    }
  }
  return 1;
}

int main(int argc, char const *argv[]) {
  int d[6];
  for (int i = 0; i < 6; i++) {
    cin >> d[i];
  }
  int e[6];
  for (int i = 0; i < 6; i++) {
    cin >> e[i];
  }
  int a1 = 0;
  int a2 = 1;
  while (d[a1] == d[a2] && a2 < 7)
    a2++;
  int b1[6];
  int b2[6];
  int c1 = 0;
  int c2 = 0;
  for (int i = 0; i < 6; i++) {
    if (d[a1] == e[i])
      b1[c1++] = i;
    if (d[a2] == e[i])
      b2[c2++] = i;
  }
  for (int i = 0; i < c1; i++) {
    for (int j = 0; j < c2; j++) {
      if (d[dice(a1 + 1, a2 + 1) - 1] == e[dice(b1[i] + 1, b2[j] + 1) - 1] &&
          d[5 - a1] == e[5 - b1[i]] && d[5 - a2] == e[5 - b2[j]]) {
        cout << "Yes" << endl;
        return 0;
      }
    }
  }
  cout << "No" << endl;
  return 0;
}


Error: -11

Fixed submission:

#include <algorithm>
#include <iostream>
#include <string>

using namespace std;

int dice(int a, int b) {
  int count = 0;
  string tpat[3];
  tpat[0] = "12651";
  tpat[1] = "23542";
  tpat[2] = "13641";
  int ret[3];
  ret[0] = 3;
  ret[1] = 1;
  ret[2] = 5;
  for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 4; j++) {
      if (tpat[i][j] - '0' == a && tpat[i][j + 1] - '0' == b) {
        return ret[i];
      }
    }
  }
  tpat[0] = "15621";
  tpat[1] = "24532";
  tpat[2] = "14631";
  for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 4; j++) {
      if (tpat[i][j] - '0' == a && tpat[i][j + 1] - '0' == b) {
        return 7 - ret[i];
      }
    }
  }
}

int main(int argc, char const *argv[]) {
  int d[6];
  for (int i = 0; i < 6; i++) {
    cin >> d[i];
  }
  int e[6];
  for (int i = 0; i < 6; i++) {
    cin >> e[i];
  }
  int a1 = 0;
  int a2 = 1;
  while (d[a1] == d[a2] && a2 < 7)
    a2++;
  int b1[6];
  int b2[6];
  int c1 = 0;
  int c2 = 0;
  for (int i = 0; i < 6; i++) {
    if (d[a1] == e[i])
      b1[c1++] = i;
    if (d[a2] == e[i])
      b2[c2++] = i;
  }
  for (int i = 0; i < c1; i++) {
    for (int j = 0; j < c2; j++) {
      if (d[dice(a1, a2) - 1] == e[dice(b1[i] + 1, b2[j] + 1) - 1]) {
        cout << "Yes" << endl;
        return 0;
      }
    }
  }
  cout << "No" << endl;
  return 0;
}
Problem p02385 (C++) — buggy submission, verdict: Runtime Error

#include <cstdlib>
#include <iomanip>
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

using namespace std;

void roll(int target[], int idx[], int size, bool rev) {
  if (!rev) {
    int tmp = target[idx[0]];
    for (int i = 0; i < size - 1; i++) {
      target[idx[i]] = target[idx[i + 1]];
    }
    target[idx[size - 1]] = tmp;
  } else {
    int tmp = target[idx[size - 1]];
    for (int i = size - 1; i > 0; i--) {
      target[idx[i]] = target[idx[i - 1]];
    }
    target[idx[0]] = tmp;
  }
}

bool is_match(int x[], int y[], int size) {
  for (int i = 0; i < size; i++) {
    if (x[i] != y[i])
      return false;
  }
  return true;
}

void pri(int x[], int size) {
  cout << "==" << endl;
  for (int i = 1; i < size; i++) {
    cout << x[i] << " ";
  }
  cout << endl;
}

int main() {

  int x[7], y[7];
  memset(x, -1, 7 * sizeof(int));
  memset(y, -1, 7 * sizeof(int));
  for (int i = 1; i < 7; i++) {
    cin >> x[i];
  }
  for (int i = 1; i < 7; i++) {
    cin >> y[i];
  }

  int roll_n[] = {5, 1, 2, 6};
  int roll_e[] = {3, 1, 4, 6};
  int roll_side[] = {3, 5, 4, 2};

  int size = sizeof(x) / sizeof(int);
  int size_roll = sizeof(roll_n) / sizeof(int);

  for (int i = 0; i < 4; i++) {
    roll(x, roll_n, size_roll, false);
    /// pri(x,size);
    for (int j = 0; j < 4; j++) {
      roll(x, roll_side, size_roll, false);
      // pri(x,size);
      if (is_match(x, y, size)) {
        cout << "Yes" << endl;
        return 0;
      }
    }
  }

  for (int i = 0; i < 4; i++) {
    roll(x, roll_e, size_roll, false);
    for (int j = 0; j < 4; j++) {
      roll(x, roll_side, size_roll, false);
      if (is_match(x, y, size)) {
        cout << "Yes" << endl;
        return 0;
      }
    }
  }

  cout << "No" << endl;
}


Error: 0

Fixed submission:

#include <cstdlib>
#include <iomanip>
#include <iostream>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

using namespace std;
int main() {

  int x[7], y[7];
  memset(x, -1, 7 * sizeof(int));
  memset(y, -1, 7 * sizeof(int));
  for (int i = 1; i < 7; i++) {
    cin >> x[i];
  }
  for (int i = 1; i < 7; i++) {
    cin >> y[i];
  }

  bool rec = true;

  bool exist_same = false;
  for (int i = 1; i < 7; i++) {
    for (int j = 1; j < 7; j++) {
      if (x[i] == y[j])
        exist_same = true;
    }
  }
  if (!exist_same) {
    cout << "No" << endl;
    return 1;
  }

  for (int i = 1; i < 4; i++) {
    if (x[i] == y[i]) {
      rec = rec;
    } else if (x[i] == y[7 - i]) {
      rec = !rec;
    } else {
      cout << "No" << endl;
      return 1;
    }
  }

  if (rec)
    cout << "Yes" << endl;
  else
    cout << "No" << endl;
}
Problem p02385 (C++) — buggy submission, verdict: Runtime Error

#include <iostream>

int memo[101][101] = {-1};
int x[3][5] = {{1, 2, 6, 5, 1}, {1, 3, 6, 4, 1}, {2, 3, 5, 4, 2}};
int sides[3][2] = {{4, 3}, {2, 5}, {6, 1}};

int main() {
  int dice_a[7], dice_b[7];
  int top, front, q;
  char command;

  for (int i = 1; i < 7; i++)
    std::cin >> dice_a[i];
  for (int i = 1; i < 7; i++)
    std::cin >> dice_b[i];

  for (int j = 0; j < 3; j++) {
    for (int i = 1; i < 5; i++) {
      memo[dice_a[x[j][i]]][dice_a[x[j][i - 1]]] = dice_a[sides[j][0]];
      memo[dice_a[x[j][i - 1]]][dice_a[x[j][i]]] = dice_a[sides[j][1]];
    }
  }

  if (memo[dice_b[1]][dice_b[2]] == dice_b[3] &&
      memo[dice_b[2]][dice_b[1]] == dice_b[4]) {
    std::cout << "Yes" << std::endl;
  } else {
    std::cout << "No" << std::endl;
  }
  return 0;
}


Error: 0

Fixed submission:

#include <iostream>

int memo[7][7] = {-1};
int x[3][5] = {{1, 2, 6, 5, 1}, {1, 3, 6, 4, 1}, {2, 3, 5, 4, 2}};
int sides[3][2] = {{4, 3}, {2, 5}, {6, 1}};

int main() {
  int dice_a[7], dice_b[7];
  int top, front, q;
  char command;

  for (int i = 1; i < 7; i++)
    std::cin >> dice_a[i];
  for (int i = 1; i < 7; i++)
    std::cin >> dice_b[i];

  for (int j = 0; j < 3; j++) {
    for (int i = 1; i < 5; i++) {
      memo[dice_a[x[j][i]]][dice_a[x[j][i - 1]]] = dice_a[sides[j][0]];
      memo[dice_a[x[j][i - 1]]][dice_a[x[j][i]]] = dice_a[sides[j][1]];
    }
  }

  if (memo[dice_b[1]][dice_b[2]] == dice_b[3] &&
      memo[dice_b[2]][dice_b[1]] == dice_b[4]) {
    std::cout << "Yes" << std::endl;
  } else {
    std::cout << "No" << std::endl;
  }
  return 0;
}