fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define rep(i, n) for (int i = 0; i < (n); ++i)
  5.  
  6. const int n = 1e7; // limit for array size
  7. int t[2 * n];
  8.  
  9. void build() { // build the tree
  10. for (int i = n - 1; i > 0; --i) t[i] = min(t[i<<1], t[i<<1|1]);
  11. }
  12.  
  13. void modify(int p, int value) { // set value at position p
  14. for (t[p += n] = value; p > 1; p >>= 1) t[p>>1] = min(t[p], t[p^1]);
  15. }
  16.  
  17. int query(int l, int r) { // sum on interval [l, r)
  18. int res = INT_MAX;
  19. for (l += n, r += n; l < r; l >>= 1, r >>= 1) {
  20. if (l&1) res = min(res, t[l++]);
  21. if (r&1) res = min(res, t[--r]);
  22. }
  23. return res;
  24. }
  25.  
  26. int main() {
  27. rep(i, n) t[i + n] = i;
  28. build();
  29. bool f = true;
  30. rep(i, n) {
  31. int l = rand()%n, r = rand()%n;
  32. if (l == r) continue;
  33. if (l > r) swap(l, r);
  34. f &= query(l, r) == l;
  35. }
  36. cout << (f ? "OK" : "NG") << endl;
  37. }
Success #stdin #stdout 2.04s 81600KB
stdin
Standard input is empty
stdout
OK