답안 #475651

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
475651 2021-09-23T15:05:48 Z Alex_tz307 Deda (COCI17_deda) C++17
컴파일 오류
0 ms 0 KB
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f

using namespace std;

struct SegTree {
  int Size;
  vector<int> tree;

  SegTree(int n) {
    Size = 1;
    while (Size < n) {
      Size <<= 1;
    }
    tree.resize(Size << 1, INF);
  }

  void update(int x, int lx, int rx, int pos, int val) {
    if (lx == rx) {
      tree[x] = val;
      cout << lx << ' ' << pos << ' ' << val << endl;
      return;
    }
    int mid = (lx + rx) >> 1, lSon = x << 1, rSon = x << 1 | 1;
    if (pos <= mid) {
      update(lSon, lx, mid, pos, val);
    } else {
      update(rSon, mid + 1, rx, pos, val);
    }
    tree[x] = min(tree[lSon], tree[rSon]);
  }

  int query(int x, int lx, int rx, int st, int dr, int val) {
    if (lx == rx) {
      return lx;
    }
    int mid = (lx + rx) >> 1, lSon = x << 1, rSon = x << 1 | 1, ans = -1;
    if (st <= mid && tree[lSon] <= val) {
      ans = query(lSon, lx, mid, pos, val);
    }
    if (mid + 1 <= dr && ans == -1 && tree[rSon] <= val) {
      return query(rSon, mid + 1, rx, pos, val);
    }
    return ans;
  }
};

void test_case() {
  int n, q;
  cin >> n >> q;
  SegTree tree(n);
  for (int i = 1; i <= q; ++i) {
    char op;
    int x, pos;
    cin >> op >> x >> pos;
    if (op == 'M') {
      tree.update(1, 1, n, pos, x);
    } else {
      cout << tree.query(1, 1, n, pos, n, x) << '\n';
    }
  }
}

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int T = 1;
  for (int tc = 1; tc <= T; ++tc) {
    test_case();
  }
  return 0;
}

Compilation message

deda.cpp: In member function 'int SegTree::query(int, int, int, int, int, int)':
deda.cpp:39:34: error: 'pos' was not declared in this scope; did you mean 'pow'?
   39 |       ans = query(lSon, lx, mid, pos, val);
      |                                  ^~~
      |                                  pow
deda.cpp:42:39: error: 'pos' was not declared in this scope; did you mean 'pow'?
   42 |       return query(rSon, mid + 1, rx, pos, val);
      |                                       ^~~
      |                                       pow