Submission #835499

#TimeUsernameProblemLanguageResultExecution timeMemory
835499ma_moutahidDigital Circuit (IOI22_circuit)C++17
7 / 100
3067 ms2097152 KiB
#include <vector> #include<bits/stdc++.h> #include "circuit.h" using namespace std; #define vi vector<int> #define vii vector<vi> #define ll long long #define vl vector<ll> int n,m; vii g; vl ways; vl wb; int mod=1000002022; void init(int N, int M, std::vector<int> P, std::vector<int> A) { n=N; m=M; g.resize(N+M); ways.resize(M+N); wb.resize(M+N); for(int i=1 ;i<N+M;i++){ g[P[i]].push_back(i); } for(int i=N;i<N+M;i++){ ways[i]=A[i-N]; wb[i]=!ways[i]; } } void dfs(int node){ if(g[node].size()==0)return; dfs(g[node][0]); dfs(g[node][1]); ways[node]=2*ways[g[node][0]]*ways[g[node][1]]+ways[g[node][1]]*wb[g[node][0]]+ways[g[node][0]]*wb[g[node][1]]; wb[node]=2*wb[g[node][0]]*wb[g[node][1]]+ways[g[node][1]]*wb[g[node][0]]+ways[g[node][0]]*wb[g[node][1]]; ways[node]%=mod; wb[node]%=mod; } int count_ways(int L, int R) { for(int i=L;i<=R;i++){ ways[i]=!ways[i]; wb[i]=!wb[i]; } dfs(0); return ways[0]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...