| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 812187 | andrei_boaca | Digital Circuit (IOI22_circuit) | C++17 | 3091 ms | 10932 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 "circuit.h"
#include <bits/stdc++.h>
#include <vector>
//#include "stub.cpp"
using namespace std;
typedef long long ll;
const ll mod=1e9+2022;
ll a[300005],par[300005];
ll n,m,minim[300005],maxim[300005],dp[2][300005],toprop[300005];
vector<ll> muchii[300005];
ll nr[300005],aux[300005];
void calc(int nod)
{
dp[1][nod]=dp[0][nod]=0;
for(int j=0;j<=muchii[nod].size();j++)
nr[j]=0;
nr[0]=1;
for(int i=0;i<muchii[nod].size();i++)
{
for(int j=0;j<=i+1;j++)
aux[j]=0;
for(int j=0;j<=i+1;j++)
{
ll val=(nr[j]*dp[0][muchii[nod][i]])%mod;
aux[j]=(aux[j]+val)%mod;
if(j>0)
{
val=(nr[j-1]*dp[1][muchii[nod][i]])%mod;
aux[j]=(aux[j]+val)%mod;
}
}
for(int j=0;j<=i+1;j++)
nr[j]=aux[j];
}
for(ll i=0;i<=muchii[nod].size();i++)
{
ll nr1=(nr[i]*i)%mod;
dp[1][nod]=(dp[1][nod]+nr1)%mod;
ll nr0=(1LL*nr[i]*(muchii[nod].size()-i))%mod;
dp[0][nod]=(dp[0][nod]+nr0)%mod;
}
}
void build(int nod)
{
dp[1][nod]=dp[0][nod]=0;
if(muchii[nod].size()==0)
{
dp[a[nod]][nod]=1;
dp[1-a[nod]][nod]=0;
return;
}
for(int i:muchii[nod])
build(i);
calc(nod);
}
void init(int N, int M, std::vector<int> P, std::vector<int> A) {
n=N;
m=M;
for(int i=0;i<P.size();i++)
{
par[i]=P[i];
if(i!=0)
muchii[par[i]].push_back(i);
}
for(int i=0;i<A.size();i++)
a[i+n]=A[i];
build(0);
}
int count_ways(int L, int R) {
for(int i=L;i<=R;i++)
a[i]^=1;
build(0);
return dp[1][0];
}
Compilation message (stderr)
| # | 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... | ||||
