#include "circuit.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n, m, a[1000];
vector<ll> t[2000];
pair<ll,ll> dfs(ll curr){
// cout<<curr<<endl;
if(curr>=n){
if(a[curr-n]) return {0,1};
else return {1,0};
}
else{
ll a0, a1, b0, b1;
tie(a0,a1)=dfs(t[curr][0]);
tie(b0,b1)=dfs(t[curr][1]);
return {2*a0*b0 + a0*b1 + a1*b0, a0*b1 + a1*b0 + 2*a1*b1};
}
}
void init(int N, int M, vector<int> P, vector<int> A) {
n=N;
m=M;
for(ll i=0; i<m; i++){
a[i]=A[i];
}
for(ll i=1; i<n+m; i++){
t[P[i]].push_back(i);
}
}
int count_ways(int l, int r) {
for(ll i=l-n; i<=r-n; i++){
a[i]^=1;
}
return dfs(0).second;
}
# | 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... |