Problem p00545 (C++) — buggy submission, verdict: Runtime Error


#include <bits/stdc++.h>

#define int long long int
#define rep(a, b, c) for (int a = b; a < c; a++)
#define repm(a, b, c) for (int a = (b - 1); a >= c; a--)
#define pb push_back
#define str string
#define sf(a) scanfs("%d", &a)
#define pb push_back
#define mp make_pair
#define Fi first
#define Se second
#define ALL(v) (v).begin(), (v).end()

using namespace std;

const int INF = 1e18 + 9;
const int Mod = 1e9 + 7;
inline int replac(str s) {
  double ans = 0;
  rep(i, 0, s.length()) { ans += (s[i] - '0') * pow(10, s.length() - i - 1); }
  return (int)ans;
}
inline string numstr(int m) {
  str s = "";
  while (m > 0) {
    char c;
    int a = m / 10;
    if (a > 0)
      a = m % (a * 10);
    else
      a = m;
    c = (char)('0' + a);
    s += c;
    m /= 10;
  }
  str st = "";
  for (int i = s.size() - 1; i >= 0; i--) {
    st += s[i];
  }
  return st;
}
typedef vector<int> vi;
typedef pair<int, int> pii;
typedef vector<pii> vii;
int x[100005], y[100005];
int memo[100005];
signed main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  int n, t, m, a[2], len = 2;
  cin >> n >> t >> m;
  rep(i, 0, n) { cin >> x[i] >> y[i]; }
  rep(i, 0, 100005) { memo[i] = 0; }
  rep(j, 0, n) {
    if (y[j] == 2) {
      memo[j] = x[j] - t;
    }
    if (y[j] == 1) {
      memo[j] = x[j] + t;
      for (; j < n; j++) {
        memo[j] = x[j] + t;
        if (y[j] == 2) {
          int wa;
          int butu = (x[j - 1] + x[j]) / 2;
          // cout << butu <<" " << j << "ss";
          // 1?????????
          for (int p = j - 1; p >= 0; p--) {
            if (y[p] == 2)
              break;
            if ((x[p] + t) >= butu) {
              memo[p] = butu;
            } else {
              break;
            }
          }
          int mae = j - 1;
          for (; j < n; j++) {
            if (y[j] == 1) {
              j--;
              break;
            }
            if ((x[j] - t) <= butu) {
              //  cout << j << endl;
              memo[j] = butu;
            } else {
              memo[j] = x[j] - t;
            }
          }
        }
      }
    }
  }
  rep(i, 0, m) {
    int u;
    cin >> u;
    cout << memo[u - 1] << endl;
  }
  return 0;
}

Error: 0

Fixed submission:


#include <bits/stdc++.h>

#define int long long int
#define rep(a, b, c) for (int a = b; a < c; a++)
#define repm(a, b, c) for (int a = (b - 1); a >= c; a--)
#define pb push_back
#define str string
#define sf(a) scanfs("%d", &a)
#define pb push_back
#define mp make_pair
#define Fi first
#define Se second
#define ALL(v) (v).begin(), (v).end()

using namespace std;

const int INF = 1e18 + 9;
const int Mod = 1e9 + 7;
inline int replac(str s) {
  double ans = 0;
  rep(i, 0, s.length()) { ans += (s[i] - '0') * pow(10, s.length() - i - 1); }
  return (int)ans;
}
inline string numstr(int m) {
  str s = "";
  while (m > 0) {
    char c;
    int a = m / 10;
    if (a > 0)
      a = m % (a * 10);
    else
      a = m;
    c = (char)('0' + a);
    s += c;
    m /= 10;
  }
  str st = "";
  for (int i = s.size() - 1; i >= 0; i--) {
    st += s[i];
  }
  return st;
}
typedef vector<int> vi;
typedef pair<int, int> pii;
typedef vector<pii> vii;

signed main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  int n, t, m, a[2], len = 2;
  cin >> n >> t >> m;
  int x[101], y[101];
  rep(i, 0, n) { cin >> x[i] >> y[i]; }
  int memo[101];
  rep(i, 0, 101) { memo[i] = 0; }
  rep(j, 0, n) {
    if (y[j] == 2) {
      memo[j] = x[j] - t;
    }
    if (y[j] == 1) {
      memo[j] = x[j] + t;
      for (; j < n; j++) {
        memo[j] = x[j] + t;
        if (y[j] == 2) {
          int wa;
          int butu = (x[j - 1] + x[j]) / 2;
          // cout << butu <<" " << j << "ss";
          // 1?????????
          for (int p = j - 1; p >= 0; p--) {
            if (y[p] == 2)
              break;
            if ((x[p] + t) >= butu) {
              memo[p] = butu;
            } else {
              break;
            }
          }
          int mae = j - 1;
          for (; j < n; j++) {
            if (y[j] == 1) {
              j--;
              break;
            }
            if ((x[j] - t) <= butu) {
              //  cout << j << endl;
              memo[j] = butu;
            } else {
              memo[j] = x[j] - t;
            }
          }
        }
      }
    }
  }
  rep(i, 0, m) {
    int u;
    cin >> u;
    cout << memo[u - 1] << endl;
  }
  return 0;
}