Submission #1213112

#TimeUsernameProblemLanguageResultExecution timeMemory
1213112yanbPrize (CEOI22_prize)C++20
0 / 100
256 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;
        int d1a, d1b, d2a, d2b;
        cin >> d1a >> d1b >> d2a >> d2b;
        dr[(root1 + i + 1) % n] = d1a + d1b;
    }
    cout << "!" << endl;

    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...