Submission #1024487

#TimeUsernameProblemLanguageResultExecution timeMemory
1024487vjudge1Digital Circuit (IOI22_circuit)C++17
18 / 100
3065 ms8460 KiB
#include "circuit.h" #include <bits/stdc++.h> #define ll long long #define sz(s) (int)s.size() #define pb push_back using namespace std; const int MAX=2e5+10; const int mod=1000002022; int n,m; vector<int> a; vector<int> g[MAX]; int dp[MAX],s[MAX]; void dfs(int v){ if(g[v].empty()){ dp[v]=a[v-n]; s[v]=1; return; } s[v]=sz(g[v]); for(auto to:g[v]){ dfs(to); s[v]=s[v]*1ll*s[to]%mod; } vector<int> d(n+m,0); d[0]=1; for(int i=0;i<sz(g[v]);i++){ int to=g[v][i]; for(int j=i+1;j>=0;j--){ int p=d[j]; d[j]=d[j]*1ll*(s[to]-dp[to]+mod)%mod; if(j-1>=0)d[j]+=d[j-1]*1ll*dp[to]%mod; d[j]%=mod; } } for(int i=1;i<=sz(g[v]);i++){ dp[v]+=i*1ll*d[i]%mod; dp[v]%=mod; } } void init(int N, int M,vector<int> P,vector<int> A) { n=N; m=M; a=A; for(int i=1;i<N+M;i++){ g[P[i]].pb(i); } } int count_ways(int L, int R) { for(int i=0;i<n+m;i++)dp[i]=0; for(int i=L;i<=R;i++)a[i-n]^=1; dfs(0); // for(int i=0;i<n;i++)cout<<dp[i]<<" "<<(s[i]-dp[i])<<"\n"; // cout<<"\n"; return dp[0]; }

Compilation message (stderr)

circuit.cpp: In function 'void dfs(int)':
circuit.cpp:34:17: warning: unused variable 'p' [-Wunused-variable]
   34 |             int p=d[j];
      |                 ^
#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...