Submission #788969

#TimeUsernameProblemLanguageResultExecution timeMemory
788969mosiashvililukaDigital Circuit (IOI22_circuit)C++17
18 / 100
3086 ms8716 KiB
#include<bits/stdc++.h> #include "circuit.h" using namespace std; long long a,b,c,d,e,i,j,ii,jj,zx,xc,mod=1000002022LL,dp[200009],ALL[200009],f[200009],L,R,pr[200009],sf[200009]; vector <long long> v[200009]; void init(int N, int M, std::vector<int> P, std::vector<int> A) { a=N+M; for(ii=1; ii<P.size(); ii++){ i=ii+1; v[P[ii]+1].push_back(i); } for(i=N+1; i<=a; i++){ f[i]=A[i-N-1]; } } void dfs(int q, int w){ if(v[q].size()==0){ dp[q]=f[q];ALL[q]=1; return; } ALL[q]=v[q].size();dp[q]=0; for(vector <long long>::iterator it=v[q].begin(); it!=v[q].end(); it++){ dfs((*it),q); ALL[q]*=ALL[(*it)];ALL[q]%=mod; } long long qw=1; for(vector <long long>::iterator it=v[q].begin(); it!=v[q].end(); it++){ pr[(*it)]=qw; qw*=ALL[(*it)];qw%=mod; } vector <long long>::iterator it=v[q].end();it--; qw=1; for( ; ; ){ sf[(*it)]=qw; qw*=ALL[(*it)];qw%=mod; if(it==v[q].begin()) break; it--; } for(vector <long long>::iterator it=v[q].begin(); it!=v[q].end(); it++){ zx=pr[(*it)]*sf[(*it)];zx%=mod; dp[q]+=dp[(*it)]*zx;dp[q]%=mod; } } int count_ways(int LL, int RR) { L=LL+1;R=RR+1; for(i=L; i<=R; i++) f[i]^=1; dfs(1,0); /*for(i=1; i<=a; i++){ cout<<dp[i]<<" "<<pr[i]<<" "<<sf[i]<<"\n"; }*/ return dp[1]; }

Compilation message (stderr)

circuit.cpp: In function 'void init(int, int, std::vector<int>, std::vector<int>)':
circuit.cpp:8:17: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    8 |     for(ii=1; ii<P.size(); ii++){
      |               ~~^~~~~~~~~
#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...