# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
630102 | flashmt | Digital Circuit (IOI22_circuit) | C++17 | 830 ms | 5088 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 <bits/stdc++.h>
#include "circuit.h"
using namespace std;
const int BASE = 1e9 + 2022;
const int N = 100100;
int n, m;
vector<int> a[N];
vector<int> states;
vector<long long> coef;
long long ans;
void dfs(int x)
{
vector<long long> prefix(size(a[x]));
for (int i = 0; i < size(a[x]); i++)
{
int y = a[x][i];
prefix[i] = max(1, int(size(a[y])));
if (i)
prefix[i] = prefix[i] * prefix[i - 1] % BASE;
}
long long suffix = 1;
for (int i = int(size(a[x])) - 1; i >= 0; i--)
{
int y = a[x][i];
coef[y] = suffix;
if (i)
coef[y] = coef[y] * prefix[i - 1] % BASE;
suffix *= max(1, int(size(a[y])));
suffix %= BASE;
}
for (int y : a[x])
{
coef[y] = coef[y] * coef[x] % BASE;
dfs(y);
}
}
void init(int N, int M, vector<int> P, vector<int> A)
{
n = N;
m = M;
for (int i = 1; i < n + m; i++)
a[P[i]].push_back(i);
states = A;
coef.assign(n + m, 1);
dfs(0);
for (int i = 0; i < m; i++)
if (states[i])
ans = (ans + coef[n + i]) % BASE;
}
int count_ways(int L, int R)
{
for (int i = L; i <= R; i++)
{
states[i - n] ^= 1;
if (states[i - n]) ans = (ans + coef[i]) % BASE;
else ans = (ans - coef[i] + BASE) % BASE;
}
return ans;
}
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... |