Submission #746502

#TimeUsernameProblemLanguageResultExecution timeMemory
746502Rafi22Digital Circuit (IOI22_circuit)C++17
18 / 100
3047 ms5084 KiB
#include <bits/stdc++.h> using namespace std; #define endl '\n' #define st first #define nd second #define pb push_back #define sz(x) (int)(x).size() #define all(x) (x).begin(), (x).end() #define ll long long ll mod=1000002022; int inf=1000000007; ll infl=1000000000000000007; const int N=100007; ll DP[N]; vector<int>G[N]; ll ile[N]; ll P[N]; ll S[N]; int n,m; void init(int N,int M,vector<int>p,vector<int>a) { n=N,m=M; for(int i=0;i<m;i++) DP[i+n]=a[i]; for(int i=1;i<n+m;i++) G[p[i]].pb(i); } void dfs(int v) { if(sz(G[v])==0) { ile[v]=1; return ; } for(auto u:G[v]) dfs(u); P[0]=1; for(int i=0;i<sz(G[v]);i++) P[i+1]=P[i]*ile[G[v][i]]%mod; S[sz(G[v])+1]=1; for(int i=sz(G[v])-1;i>=0;i--) S[i+1]=S[i+2]*ile[G[v][i]]%mod; DP[v]=0; for(int i=0;i<sz(G[v]);i++) { DP[v]=(DP[v]+P[i]*S[i+2]%mod*DP[G[v][i]])%mod; } ile[v]=P[sz(G[v])]*sz(G[v])%mod; } int count_ways(int l,int r) { for(int i=l;i<=r;i++) DP[i]^=1; dfs(0); return DP[0]; } /*int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); init(3, 4, {-1, 0, 1, 2, 1, 1, 0}, {1, 0, 1, 0}); cout<<count_ways(3, 4)<<endl; cout<<count_ways(4, 5)<<endl; cout<<count_ways(3, 6)<<endl; return 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...