Submission #1010179

#TimeUsernameProblemLanguageResultExecution timeMemory
1010179somefjordWall (IOI14_wall)C++17
0 / 100
108 ms22252 KiB
#include "wall.h"
#include <bits/stdc++.h>

constexpr int N = 1 << 21;

struct SegTree {
  int seg[N];
  int n;
  SegTree(int n) : n(n) {}

  void update(int l, int r, int d) {
    l += n;
    r += n;
    while (r > l) {
      if (l & 1) {
        seg[l++] += d;
      }
      if (r & 1) {
        seg[--r] += d;
      }

      l /= 2;
      r /= 2;
    }
  }

  int query(int i) { return seg[n + i]; }
};

void buildWall(int n, int k, int op[], int left[], int right[], int height[],
               int finalHeight[]) {
  SegTree tr(n);

  for (int i = 0; i < k; ++i) {
    tr.update(left[i], right[i] + 1, op[i] == 1 ? height[i] : -height[i]);
  }

  for (int i = 0; i < n; ++i) {
    finalHeight[i] = tr.query(i);
  }

  return;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...