#include <bits/stdc++.h>
#include "circuit.h"
using namespace std;
#define fi first
#define se second
typedef long long ll;
typedef long double ld;
mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count());
int inf = 1e9;
ll mod = 1000002022;
vector<ll> a;
ll n, m;
vector<pair<ll, ll>> g;
void init(int N, int M, vector<int> p, vector<int> A) {
g.resize(n, {-1, -1});
for (ll i = 1; i < p.size(); i++) {
if (g[p[i]].fi == -1) {
g[p[i]].se = i;
} else {
g[p[i]].fi = i;
}
}
a.resize(m);
for (ll i = 0; i < m; i++) {
a[i] = A[i];
}
n = N;
m = M;
}
int count_ways(int l, int r) {
for (ll i = l - n; i <= r - n; i++) {
a[i] = 1 - a[i];
}
vector<pair<ll, ll>> dp(n + m, {0, 0});
for (ll i = 0; i < m; i++) {
if (a[i] == 0) {
dp[n + i].fi = 1;
} else {
dp[n + 1].se = 1;
}
}
for (ll i = n - 1; i >= 0; i++) {
ll v = g[i].fi, u = g[i].se;
dp[i].fi = ((dp[v].fi * dp[u].fi) * 2) % mod;
dp[i].fi = (dp[i].fi + (dp[v].fi * dp[u].se) + (dp[v].se * dp[u].fi)) % mod;
dp[i].se = ((dp[v].fi * dp[u].se) + (dp[v].se * dp[u].fi)) % mod;
dp[i].se = (dp[i].se + (dp[v].se * dp[u].se) * 2) % mod;
}
int ans = (dp[0].se % mod);
return ans;
}
# | 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... |
# | 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... |