제출 #1056625

#제출 시각아이디문제언어결과실행 시간메모리
1056625vjudge1디지털 회로 (IOI22_circuit)C++17
46 / 100
3073 ms4184 KiB
#include "circuit.h" #include <bits/stdc++.h> using namespace std; using vi = vector<int>; using ll = long long; using vll = vector<ll>; const int MOD = 1e9 + 2022; vi W, A; int n0; void init(int n, int m, vi P, vi A0) { n0 = n; A = A0; vector<vi> G(n + m); vi NR(n + m, 0); for(int i = 1; i < n + m; ++i) { G[P[i]].push_back(i); } function<void(int)> dfs0 = [&](int u) { NR[u] = 1; if(u >= n) { return; } for(auto it : G[u]) { dfs0(it); NR[u] = 1ll * NR[u] * NR[it] % MOD; } NR[u] = 1ll * NR[u] * G[u].size() % MOD; }; dfs0(0); W.resize(m, 0); function<void(int, int)> dfs = [&](int u, int v) { if(u >= n) { W[u - n] = v; return; } vi Pref, Suf; for(auto it : G[u]) { Pref.push_back(NR[it]); Suf.push_back(NR[it]); } int nr = Pref.size(); for(int i = 1; i < nr; ++i) Pref[i] = 1ll * Pref[i - 1] * Pref[i] % MOD; for(int i = nr - 2; i >= 0; --i) Suf[i] = 1ll * Suf[i + 1] * Suf[i] % MOD; for(int i = 0; i < nr; ++i) { ll f = 1; if(i) f *= Pref[i - 1]; if(i + 1 < nr) f *= Suf[i + 1]; f %= MOD; dfs(G[u][i], f * v % MOD); } }; dfs(0, 1); } int count_ways(int l, int r) { l -= n0; r -= n0; for(int i = l; i <= r; ++i) { A[i] ^= 1; } ll re = 0; for(int i = 0; i < W.size(); ++i) { re += 1ll * W[i] * A[i] % MOD; re %= MOD; } return re; }

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

circuit.cpp: In function 'int count_ways(int, int)':
circuit.cpp:69:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   69 |     for(int i = 0; i < W.size(); ++i) {
      |                    ~~^~~~~~~~~~
#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...