이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#include "circuit.h"
using namespace std;
typedef long long ll;
const ll mod=1000002022;
ll n, m;
vector<ll> p, a;
vector<vector<ll>> v;
vector<ll> k;
vector<ll> s;
vector<ll> pw(2010);
void init(int N, int M, vector<int> P, vector<int> A){
n=N;
m=M;
for(ll i=0; i<n+m; i++){
p.push_back(P[i]);
a.push_back(A[i]);
}
v.resize(n+m);
for(ll i=1; i<n+m; i++){
v[p[i]].push_back(i);
}
k.resize(n+m);
s.resize(n+m);
pw[0]=1;
for(ll i=1; i<2010; i++){
pw[i]=(pw[i-1]*2)%mod;
}
}
void solve(int x){
k[x]=0;
if(x>=n){
k[x]=a[x-n];
s[x]=0;
return;
}
solve(v[x][0]);
solve(v[x][1]);
k[x]=((k[v[x][0]]*pw[s[v[x][1]]])%mod+(k[v[x][1]]*pw[s[v[x][0]]])%mod)%mod;
s[x]=s[v[x][0]]+s[v[x][1]]+1;
return;
}
int count_ways(int l, int r){
for(ll i=l-n; i<=r-n; i++){
a[i]=1-a[i];
}
solve(0);
return int(k[0]);
}
# | 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... |