src/edh/cantor/seq/lib.hpp
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #pragma once | ||
| 2 | |||
| 3 | #include "../../../ds/fenwick/d1/lib.hpp" | ||
| 4 | |||
| 5 | namespace tifa_libs { | ||
| 6 | |||
| 7 | //! [0, n) | ||
| 8 | //! p \in [1, n], a_i == a_j \iff i == j | ||
| 9 | 40 | CEXP vecu cantor_seq(spnu p) NE { | |
| 10 | 40 | cu32 n = (u32)p.size(); | |
| 11 | 40 | fenwick<u32> tr(n + 1); | |
| 12 | 40 | vecu s(n); | |
| 13 |
2/2✓ Branch 5 taken 194 times.
✓ Branch 6 taken 40 times.
|
234 | for (u32 i = n - 1; ~i; --i) s[i] = tr.sum(p[i]), tr.add(p[i], 1); |
| 14 | 40 | return s; | |
| 15 | 40 | } | |
| 16 | |||
| 17 | } // namespace tifa_libs | ||
| 18 |