diff --git a/testes/hld-ps.cpp b/testes/hld-ps.cpp index e1f4bbf315b83860e14b6c6a4a862084505a493e..944e6c7125954f3cb6891b8afdb8f855cba29b47 100644 --- a/testes/hld-ps.cpp +++ b/testes/hld-ps.cpp @@ -8,7 +8,7 @@ const int N = 1e5+15; vector<vector<ii>> g (N); #define OP(X, Y) ((X) + (Y)) -#include "../fontes/prefix-sum.h" +#include "../fontes/excluded/prefix-sum.h" #define op_inclusive sum_inclusive #include "../fontes/hld.h" @@ -26,7 +26,7 @@ int main() { g[b].push_back(ii(a, t)); } - hld_init(0); + hld_init(0, n); bool first = true; int q; cin >> q; diff --git a/testes/lstit.cpp b/testes/lstit.cpp index ccf0cebbcaf9d7cdfe070f497df09296ab7da40e..0ff33050f4577a52d5ccc72bb9240211e3d5bd68 100644 --- a/testes/lstit.cpp +++ b/testes/lstit.cpp @@ -5,81 +5,83 @@ const int N = 1e5+15; #define OP(X, Y) ((X) + (Y)) #define NEUTRAL 0 #define FACTOR(sz) sz -#include "../fontes/lstit.h" +#include "../fontes/lazy-segment-tree.h" int main() { ios::sync_with_stdio(0); cin.tie(0); - apply_inclusive(1, 10, '+', 1); - apply_inclusive(1, 8, '+', 1); - apply_inclusive(2, 4, '+', 5); - apply_inclusive(3, 8, '+', 3); + int n = 10; + + apply_inclusive(1, 10, n, '+', 1); + apply_inclusive(1, 8, n, '+', 1); + apply_inclusive(2, 4, n, '+', 5); + apply_inclusive(3, 8, n, '+', 3); apply_inclusive(1, 10, '=', 0); - assert(op_inclusive(1, 1) == 0); - assert(op_inclusive(2, 2) == 0); - assert(op_inclusive(3, 3) == 0); - assert(op_inclusive(4, 4) == 0); - assert(op_inclusive(5, 5) == 0); - assert(op_inclusive(6, 6) == 0); - assert(op_inclusive(7, 7) == 0); - assert(op_inclusive(8, 8) == 0); - assert(op_inclusive(9, 9) == 0); + assert(op_inclusive(1, 1, n) == 0); + assert(op_inclusive(2, 2, n) == 0); + assert(op_inclusive(3, 3, n) == 0); + assert(op_inclusive(4, 4, n) == 0); + assert(op_inclusive(5, 5, n) == 0); + assert(op_inclusive(6, 6, n) == 0); + assert(op_inclusive(7, 7, n) == 0); + assert(op_inclusive(8, 8, n) == 0); + assert(op_inclusive(9, 9, n) == 0); - assert(op_inclusive(5, 8) == 0); - assert(op_inclusive(1, 8) == 0); - assert(op_inclusive(1, 9) == 0); + assert(op_inclusive(5, 8, n) == 0); + assert(op_inclusive(1, 8, n) == 0); + assert(op_inclusive(1, 9, n) == 0); - apply_inclusive(1, 10, '+', 1); - apply_inclusive(1, 8, '+', 1); - apply_inclusive(2, 4, '+', 5); - apply_inclusive(3, 8, '+', 3); + apply_inclusive(1, 10, n, '+', 1); + apply_inclusive(1, 8, n, '+', 1); + apply_inclusive(2, 4, n, '+', 5); + apply_inclusive(3, 8, n, '+', 3); - assert(op_inclusive(1, 1) == 2); - assert(op_inclusive(2, 2) == 7); - assert(op_inclusive(3, 3) == 10); - assert(op_inclusive(4, 4) == 10); - assert(op_inclusive(5, 5) == 5); - assert(op_inclusive(6, 6) == 5); - assert(op_inclusive(7, 7) == 5); - assert(op_inclusive(8, 8) == 5); - assert(op_inclusive(9, 9) == 1); + assert(op_inclusive(1, 1, n) == 2); + assert(op_inclusive(2, 2, n) == 7); + assert(op_inclusive(3, 3, n) == 10); + assert(op_inclusive(4, 4, n) == 10); + assert(op_inclusive(5, 5, n) == 5); + assert(op_inclusive(6, 6, n) == 5); + assert(op_inclusive(7, 7, n) == 5); + assert(op_inclusive(8, 8, n) == 5); + assert(op_inclusive(9, 9, n) == 1); - assert(op_inclusive(5, 8) == 20); - assert(op_inclusive(1, 8) == 49); - assert(op_inclusive(1, 9) == 50); + assert(op_inclusive(5, 8, n) == 20); + assert(op_inclusive(1, 8, n) == 49); + assert(op_inclusive(1, 9, n) == 50); - apply_inclusive(1, 10, '+', 1); + apply_inclusive(1, 10, n, '+', 1); - assert(op_inclusive(1, 1) == 3); - assert(op_inclusive(2, 2) == 8); - assert(op_inclusive(3, 3) == 11); - assert(op_inclusive(4, 4) == 11); - assert(op_inclusive(5, 5) == 6); - assert(op_inclusive(6, 6) == 6); - assert(op_inclusive(7, 7) == 6); - assert(op_inclusive(8, 8) == 6); - assert(op_inclusive(9, 9) == 2); + assert(op_inclusive(1, 1, n) == 3); + assert(op_inclusive(2, 2, n) == 8); + assert(op_inclusive(3, 3, n) == 11); + assert(op_inclusive(4, 4, n) == 11); + assert(op_inclusive(5, 5, n) == 6); + assert(op_inclusive(6, 6, n) == 6); + assert(op_inclusive(7, 7, n) == 6); + assert(op_inclusive(8, 8, n) == 6); + assert(op_inclusive(9, 9, n) == 2); - assert(op_inclusive(5, 8) == 24); - assert(op_inclusive(1, 8) == 57); - assert(op_inclusive(1, 9) == 59); + assert(op_inclusive(5, 8, n) == 24); + assert(op_inclusive(1, 8, n) == 57); + assert(op_inclusive(1, 9, n) == 59); - apply_inclusive(1, 7, '=', 0); + apply_inclusive(1, 7, n, '=', 0); - assert(op_inclusive(1, 1) == 0); - assert(op_inclusive(2, 2) == 0); - assert(op_inclusive(3, 3) == 0); - assert(op_inclusive(4, 4) == 0); - assert(op_inclusive(5, 5) == 0); - assert(op_inclusive(6, 6) == 0); - assert(op_inclusive(7, 7) == 0); - assert(op_inclusive(8, 8) == 6); - assert(op_inclusive(9, 9) == 2); + assert(op_inclusive(1, 1, n) == 0); + assert(op_inclusive(2, 2, n) == 0); + assert(op_inclusive(3, 3, n) == 0); + assert(op_inclusive(4, 4, n) == 0); + assert(op_inclusive(5, 5, n) == 0); + assert(op_inclusive(6, 6, n) == 0); + assert(op_inclusive(7, 7, n) == 0); + assert(op_inclusive(8, 8, n) == 6); + assert(op_inclusive(9, 9, n) == 2); - assert(op_inclusive(5, 7) == 0); - assert(op_inclusive(5, 8) == 6); - assert(op_inclusive(1, 8) == 6); - assert(op_inclusive(1, 9) == 8); + assert(op_inclusive(5, 7, n) == 0); + assert(op_inclusive(5, 8, n) == 6); + assert(op_inclusive(1, 8, n) == 6); + assert(op_inclusive(1, 9, n) == 8); } diff --git a/testes/monotone.cpp b/testes/monotone.cpp index 2c4e22247ec44a3708f298058a5b465532f4abda..4fa7590ce5362de740fb3144454139a3b2904a76 100644 --- a/testes/monotone.cpp +++ b/testes/monotone.cpp @@ -2,6 +2,7 @@ using namespace std; using ll = long long; const double EPS = 1e-8; +#define all(X) begin(X), end(X) #include "../fontes/point.h" #include "../fontes/monotone.h"