# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
683212 | NK_ | Crossing (JOI21_crossing) | C++17 | 502 ms | 27536 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define nl '\n'
using ll = long long;
using str = string;
const int MOD = 1e9 + 7;
struct Seg {
const ll ID = 0;
vector<ll> pw, P;
vector<ll> seg, lz, LX, RX; int N, B; ll cmb(int a, int b) {
int len = RX[a] - LX[a] + 1;
return (seg[a] + (pw[__lg(len)] * seg[b])) % MOD;
};
void init(int n, int b) {
N = 1; while(N < n) N *= 2;
B = b;
seg.assign(2*N, ID), lz.assign(2*N, ID);
LX.assign(2*N, -1), RX.assign(2*N, -1);
pw = {B}; for(int i = 1; i <= __lg(N); i++) pw.push_back((pw.back() * 1LL * pw.back()) % MOD);
P = {1}; for(int i = 1; i <= __lg(N); i++) P.push_back(((P.back() * pw[i - 1]) + P.back()) % MOD);
build(1, 0, N-1);
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |