|
P2.assign(L2_n, 0); |
|
L2.assign(1<<L2_n, 0); |
|
for (int i = 0; i <= L2_n; ++i) { |
|
P2[i] = (1<<i); // to speed up 2^i |
|
L2[(1<<i)] = i; // to speed up log_2(i) |
|
} |
In line 17 we assign P2 a size of L2_n, implying we have the range [0,L2_n) available. Then we iterate i through [0,L2_n] and assign P2[i]. This leads to a problem when i = L2_n. This is a really hard to catch bug, as C++ usually allocate more size than necessary, but this very mistake has got me a runtime error in problem https://www.codechef.com/problems/TALCA?tab=statement
cpbook-code/ch9/SparseTable.cpp
Lines 17 to 22 in 26fb737
In line 17 we assign
P2a size ofL2_n, implying we have the range[0,L2_n)available. Then we iterateithrough[0,L2_n]and assignP2[i]. This leads to a problem wheni = L2_n. This is a really hard to catch bug, as C++ usually allocate more size than necessary, but this very mistake has got me a runtime error in problem https://www.codechef.com/problems/TALCA?tab=statement