제출 #638459

#제출 시각아이디문제언어결과실행 시간메모리
638459aris12345678디지털 회로 (IOI22_circuit)C++17
0 / 100
370 ms1852 KiB
#include "circuit.h" #include <bits/stdc++.h> using namespace std; const int mxN = 100005; const int mod = 1000002022; int N, M, last; vector<int> P, A; int st[4*mxN]; int comb(int l, int r, int level) { if(level == last) return (l+r)%mod; if(l == 0) return r%mod; if(r == 0) return l%mod; return (l*r)%mod; } void build(int p, int l, int r, int level = 1) { if(l == r) { st[p] = A[l]; return; } else { int md = (l+r)/2; build(2*p, l, md, level+1); build(2*p+1, md+1, r, level+1); st[p] = comb(st[2*p], st[2*p+1], level); } } void update(int p, int l, int r, int i, int level = 1) { if(l == r) { if(A[l] == 0) A[l] = 1; else A[l] = 0; st[p] = A[l]; return; } else { int md = (l+r)/2; if(i <= md) update(2*p, l, md, i, level+1); else update(2*p+1, md+1, r, i, level+1); st[p] = comb(st[2*p], st[2*p+1], level); } } void init(int n, int m, vector<int> p, vector<int> a) { N = n, M = m; int last = log2(M); A.push_back(0); for(int i = 0; i < N+M; i++) P.push_back(p[i]); for(int i = 0; i < M; i++) A.push_back(a[i]); build(1, 1, M); } int count_ways(int l, int r) { update(1, 1, M, l); return st[1]; }

컴파일 시 표준 에러 (stderr) 메시지

circuit.cpp: In function 'void init(int, int, std::vector<int>, std::vector<int>)':
circuit.cpp:53:9: warning: unused variable 'last' [-Wunused-variable]
   53 |     int last = log2(M);
      |         ^~~~
#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...