Submission #1213114

#TimeUsernameProblemLanguageResultExecution timeMemory
1213114yanbPrize (CEOI22_prize)C++20
0 / 100
246 ms125764 KiB
#include <bits/stdc++.h> #define int long long using namespace std; using pii = pair<int, int>; using t3i = tuple<int, int, int>; void dfs(int v, vector<vector<int>> &ch, vector<int> &order) { order.push_back(v); for (int u : ch[v]) dfs(u, ch, order); } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); int n, k, _, q; cin >> n >> k >> _ >> q; vector<int> p1(n); int root1; for (int i = 0; i < n; i++) { cin >> p1[i]; p1[i]--; if (p1[i] == -2) root1 = i; } vector<int> p2(n); int root2; for (int i = 0; i < n; i++) { cin >> p2[i]; p2[i]--; if (p2[i] == -2) root2 = i; } vector<vector<int>> ch1(n); for (int i = 0; i < n; i++) { if (i != root1) ch1[p1[i]].push_back(i); } vector<vector<int>> ch2(n); for (int i = 0; i < n; i++) { if (i != root2) ch2[p2[i]].push_back(i); } for (int i = 0; i < n; i++) { cout << (root1 + i) % n + 1 << " "; } cout << endl; vector<int> dr(n); for (int i = 0; i < k - 1; k++) { cout << "? " << (root1 + i + 1) % n + 1 << " " << root1 + 1 << endl; } cout << "!" << endl; for (int i = 0; i < k - 1; k++) { int d1a, d1b, d2a, d2b; cin >> d1a >> d1b >> d2a >> d2b; dr[(root1 + i + 1) % n] = d1a + d1b; } while (q--) { int u, v; cin >> u >> v; u--; v--; if (u == root1) { cout << dr[v] << " " << dr[v] << endl; } else if (v == root1) { cout << dr[u] << " " << dr[u] << endl; } else { cout << dr[v] + dr[u] << " " << dr[v] + dr[u] << endl; } } }
#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...