#include "circuit.h"
#include <bits/stdc++.h>
using namespace std;
const long long mod=1000002022;
const int MAXN=200005;
int n;
long long dp[MAXN];
vector<int> gr[MAXN];
void dfs(int v)
{
    int brs=gr[v].size();
    dp[v]=brs;
    if(!brs) dp[v]=1;
    for(int i=0; i<brs; i++)
    {
        dfs(gr[v][i]);
        dp[v]*=dp[gr[v][i]];
        dp[v]%=mod;
    }
}
long long tole[MAXN], tori[MAXN];
long long coef[MAXN];
void dfs_hp(int v)
{
    int brs=gr[v].size();
    if(!brs) return;
    if(brs==1)
    {
        coef[gr[v][0]]=1;
        dfs_hp(gr[v][0]);
        return;
    }
    tole[0]=dp[gr[v][0]];
    for(int i=1; i<brs; i++)
    {
        tole[i]=tole[i-1]*dp[gr[v][i]]%mod;
    }
    tori[brs-1]=dp[gr[v][brs-1]];
    for(int i=brs-2; i>=0; i--)
    {
        tori[i]=tori[i+1]*dp[gr[v][i]]%mod;
    }
    coef[gr[v][0]]=tori[1];
    coef[gr[v][brs-1]]=tole[brs-2];
    for(int i=1; i<brs-1; i++)
    {
        coef[gr[v][i]]=tole[i-1]*tori[i+1]%mod;
    }
    for(int i=0; i<brs; i++) dfs_hp(gr[v][i]);
}
long long pozv[MAXN];
long long st[MAXN];
void dfs_final(int v)
{
    int brs=gr[v].size();
    for(int i=0; i<brs; i++)
    {
        st[gr[v][i]]*=st[v];
        st[gr[v][i]]%=mod;
        dfs_final(gr[v][i]);
    }
}
void init(int N, int M, std::vector<int> P, std::vector<int> A)
{
    n=N+M;
    for(int i=1; i<N+M; i++)
    {
        gr[P[i]].push_back(i);
    }
    dfs(0);
    //for(int i=0; i<n; i++) cout<<dp[i]<<" ";
    //cout<<endl;
    dfs_hp(0);
    coef[0]=1;
    for(int i=0; i<N+M; i++) st[i]=coef[i];
    //for(int i=0; i<n; i++) cout<<st[i]<<" ";
    //cout<<endl;
    dfs_final(0);
    //for(int i=0; i<n; i++) cout<<st[i]<<" ";
    //cout<<endl;
    for(int i=0; i<M; i++) pozv[N+i]=A[i];
    //for(int i=0; i<n; i++) cout<<pozv[i]<<" ";
    //cout<<endl;
}
int count_ways(int L, int R)
{
    //cout<<L<<" "<<R<<endl;
    long long ans=0;
    for(int i=L; i<=R; i++) pozv[i]^=1;
    for(int i=0; i<n; i++)
    {
        //cout<<pozv[i]<<" "<<st[i]<<endl;
        ans+=pozv[i]*st[i];
    }
    return ans%mod;
}
| # | 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... |