Submission #874310

#TimeUsernameProblemLanguageResultExecution timeMemory
874310svorogazeSprinkler (JOI22_sprinkler)C++17
100 / 100
662 ms101116 KiB
/* らららららららら らららららららら らららららららら らららららららら らららららららら らららららららら らららららららら らららららららら らららららららら らららららららら らららららららら らららららららら らららららららら らららららららら らららららららら らららららららら ハツネ祭り マジヤバイや 法事中も聴き涙 そりゃ病や 蟻食うバイトがあるけどまーいいや 京急の方の蒲田 満員や ちょいNAMA-GUSAI シャングリラ Jpopは だめだこりゃ コス見りゃ婆 撮るのはマン さあうたおー Da-da-da-da-damn! わけもなく いみもなく あめがふるように Da-da-da-da-damn! わけもなく いみもなく かぜがふくようにうたう 合成みたいなバランスの女装おじさん 学生に癖毛が生えたようなモーツァルト 母性溢れる鮟モチーフのマーメイド 音声祀りに集まった ああ 最終学歴保育園でも 役3年目の米寿でも 年収図書券2~3枚でも そこに行けば音はある Da-da-da-da-damn! わけもなく いみもなく あめがふるように Da-da-da-da-damn! わけもなく いみもなく かぜがふくように Da-da-da-da-damn! わけもなく いみもなく ただいきるように Da-da-da-da-damn! わけもなく いみもなく いきをするようにうたう らららららららら らららららららら らららららららら らららららららら らららららららら らららららららら らららららららら らららららららら らららららららら らららららららら らららららららら らららららららら らららららららら らららららららら らららららららら */ //#pragma GCC optimize("O3") #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #define int long long using namespace std; using namespace __gnu_pbds; typedef tree<int, null_type, std::greater<int>, rb_tree_tag, tree_order_statistics_node_update> indexed_set; typedef tree<long long, null_type, greater_equal<>, rb_tree_tag, tree_order_statistics_node_update> ordered_multiset; #define fastio \ std::cin.tie(0), std::cout.tie(0), std::ios_base::sync_with_stdio(false) #define rep(a, b, c, d) for (int a = b; a < c; a += d) #define INF ((1ll << 48) - 1) #define all(x) (x).begin(), (x).end() #define sz(x) ((int)(x).size()) #define pb push_back #define x first #define y second #define ld long double #define MAXN 201000 vector<vector<int>> g; vector<int> p; int dp[200000][42]; void dfs1(int v, int pr) { p[v] = pr; for (auto w : g[v]) { if (w != pr) dfs1(w, v); } } signed main() { fastio; for (auto& i : dp) for (auto& j : i) j = 1; int n, l; cin >> n >> l; g.resize(n); p.resize(n, -1); for (int i = 0; i < n - 1; ++i) { int a, b; cin >> a >> b; a--, b--; g[a].push_back(b); g[b].push_back(a); } vector<int> h(n); for (auto& i : h) cin >> i; dfs1(0, -1); int q; cin >> q; while (q--) { int t; cin >> t; if (t == 1) { int x, d, w; cin >> x >> d >> w; x--; while (d >= 0) { if (x != 0) { dp[x][d] = (dp[x][d] * w) % l; } else { for (int j = 0; j <= d; j++) { dp[x][j] = (dp[x][j] * w) % l; } } d--; x = p[x]; if (x == -1) break; } } else { int x; cin >> x; x--; int r = h[x]; for (int i = 0; i <= 40; i++) { if (x != 0) { r = (r * dp[x][i]) % l; r = (r * dp[x][i + 1]) % l; } else { r = (r * dp[x][i]) % l; } x = p[x]; if (x == -1) break; } cout << r << '\n'; } } }
#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...