Submission #330894

#TimeUTC-0UsernameProblemLanguageResultExecution timeMemory
3308942020-11-26 20:24:1312tqianExamination (JOI19_examination)C++17
100 / 100
2569 ms373868 KiB
#include<bits/stdc++.h>
using namespace std;
const int SZ = (1 << 18);
// [0, SZ - 1) queries for each axis
template<class T> struct Node {
T val = 0;
Node<T>* c[2];
Node() { c[0] = c[1] = NULL; }
void upd(int ind, T v, int L = 0, int R = SZ - 1) { // add v
if (L == ind && R == ind) { val += v; return; }
int M = (L + R) / 2;
if (ind <= M) {
if (!c[0]) c[0] = new Node();
c[0]->upd(ind, v, L, M);
} else {
if (!c[1]) c[1] = new Node();
c[1]->upd(ind, v, M + 1, R);
}
val = 0;
for (int i = 0; i < 2; i++)
if (c[i]) val += c[i]->val;
}
T query(int lo, int hi, int L = 0, int R = SZ - 1) { // query sum of segment
if (hi < L || R < lo) return 0;
if (lo <= L && R <= hi) return val;
int M = (L + R) / 2;
T res = 0;
if (c[0]) res += c[0]->query(lo, hi, L, M);
if (c[1]) res += c[1]->query(lo, hi, M + 1, R);
return res;
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...