Submission #632980

# Submission time Handle Problem Language Result Execution time Memory
632980 2022-08-21T11:06:23 Z tutis Digital Circuit (IOI22_circuit) C++17
11 / 100
3000 ms 9776 KB
#include "circuit.h"

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll mod = 1000002022;
vector<pair<ll, ll>>a;

vector<int>P;
vector<int>A;
vector<vector<int>>c;
int N, M;
void calc(int i)
{
    int d = c[i].size();
    vector<ll> k(d + 2, 0ll);
    k[0] = 1;
    for (int j : c[i])
    {
        int v0 = a[j].first;
        int v1 = a[j].second;
        for (int t = d; t >= 0; t--)
        {
            k[t + 1] += v1 * k[t];
            k[t + 1] %= mod;
            k[t] = v0 * k[t];
            k[t] %= mod;
        }
    }
    a[i] = {0ll, 0ll};
    for (int t = 0; t <= d; t++)
    {
        a[i].second += k[t] * t;
        a[i].second %= mod;
        a[i].first += k[t] * (d - t);
        a[i].first %= mod;
    }
}
void init(int N_, int M_, vector<int> P_, vector<int> A_) {
    P = P_;
    A = A_;
    N = N_;
    M = M_;
    a = vector<pair<ll, ll>>(N + M);
    c = vector<vector<int>>(N + M);
    for (int i = 1; i < N + M; i++)
        c[P[i]].push_back(i);
    for (int i = N + M - 1; i >= N; i--)
    {
        if (A[i - N] == 1)
            a[i] = {0, 1};
        else
            a[i] = {1, 0};
    }
    for (int i = N - 1; i >= 0; i--)
        calc(i);
}

int count_ways(int L, int R) {
    for (int i = L; i <= R; i++)
    {
        swap(a[i].first, a[i].second);
        int j = i;
        while (j != 0)
        {
            j = P[j];
            calc(j);
        }
    }
    return (int)a[0].second;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 208 KB Output is correct
2 Correct 0 ms 208 KB Output is correct
3 Execution timed out 3082 ms 344 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 208 KB Output is correct
2 Correct 1 ms 208 KB Output is correct
3 Correct 1 ms 336 KB Output is correct
4 Correct 1 ms 336 KB Output is correct
5 Correct 2 ms 336 KB Output is correct
6 Correct 2 ms 336 KB Output is correct
7 Correct 2 ms 336 KB Output is correct
8 Correct 2 ms 336 KB Output is correct
9 Correct 4 ms 336 KB Output is correct
10 Correct 91 ms 432 KB Output is correct
11 Correct 172 ms 336 KB Output is correct
12 Correct 1 ms 336 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 208 KB Output is correct
2 Correct 0 ms 208 KB Output is correct
3 Execution timed out 3082 ms 344 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 843 ms 5040 KB Output is correct
2 Correct 1073 ms 9764 KB Output is correct
3 Correct 1110 ms 9672 KB Output is correct
4 Correct 1167 ms 9776 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 843 ms 5040 KB Output is correct
2 Correct 1073 ms 9764 KB Output is correct
3 Correct 1110 ms 9672 KB Output is correct
4 Correct 1167 ms 9776 KB Output is correct
5 Execution timed out 3052 ms 5004 KB Time limit exceeded
6 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 208 KB Output is correct
2 Correct 1 ms 208 KB Output is correct
3 Correct 1 ms 336 KB Output is correct
4 Correct 1 ms 336 KB Output is correct
5 Correct 2 ms 336 KB Output is correct
6 Correct 2 ms 336 KB Output is correct
7 Correct 2 ms 336 KB Output is correct
8 Correct 2 ms 336 KB Output is correct
9 Correct 4 ms 336 KB Output is correct
10 Correct 91 ms 432 KB Output is correct
11 Correct 172 ms 336 KB Output is correct
12 Correct 1 ms 336 KB Output is correct
13 Correct 843 ms 5040 KB Output is correct
14 Correct 1073 ms 9764 KB Output is correct
15 Correct 1110 ms 9672 KB Output is correct
16 Correct 1167 ms 9776 KB Output is correct
17 Execution timed out 3052 ms 5004 KB Time limit exceeded
18 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 208 KB Output is correct
2 Correct 0 ms 208 KB Output is correct
3 Execution timed out 3082 ms 344 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 208 KB Output is correct
2 Correct 0 ms 208 KB Output is correct
3 Execution timed out 3082 ms 344 KB Time limit exceeded
4 Halted 0 ms 0 KB -