제출 #661280

#제출 시각아이디문제언어결과실행 시간메모리
661280Alex_tz307Sprinkler (JOI22_sprinkler)C++17
0 / 100
407 ms44592 KiB
#include <bits/stdc++.h> using namespace std; const int kD = 40; void multSelf(int &x, int y, int mod) { x = (int64_t)x * y % mod; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n, l; cin >> n >> l; vector<int> par(1 + n + kD); for (int i = 1; i < n; ++i) { int u, v; cin >> u >> v; par[v] = u; } par[1] = n + 1; for (int i = n + 1; i < n + kD; ++i) { par[i] = i + 1; } vector<int> h(n + 1); for (int i = 1; i <= n; ++i) { cin >> h[i]; } vector<vector<int>> coef(1 + n + kD, vector<int>(1 + kD, 1)); int q; cin >> q; for (int i = 1; i <= q; ++i) { int t; cin >> t; if (t == 1) { int x, d, w; cin >> x >> d >> w; int node = x, curr = d; while (curr >= 0) { multSelf(coef[node][curr], w, l); node = par[node]; curr -= 1; } node = x, curr = d - 1; while (curr >= 0) { multSelf(coef[node][curr], w, l); node = par[node]; curr -= 1; } } else { int x; cin >> x; int res = h[x]; for (int d = 0; d <= kD; ++d) { multSelf(res, coef[x][d], l); x = par[x]; } cout << res << '\n'; } } 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...