#include<bits/stdc++.h>
using namespace std;
//mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); //high quality random number generator using time as seed
//int random(int l, int r){return uniform_int_distribution<int>(l,r)(rng);} //returns a randomb number between [l, r]
// Solution
void tc(){
int n, k, q, t; cin >> n >> k >> q >> t;
vector<int> a(n), b(n);
for(int i = 0; i < n; ++i){
cin >> a[i];
}
for(int i = 0; i < n; ++i){
cin >>b[i];
}
//vvi eda(n);
//vi rootdist(n);
//rootdist[0] = 0;
//vi da(n);
for(int i = 0; i < k; ++i){
cout << i+1 << " ";
}
cout << '\n';
for(int i = 1; i < k; ++i){
cout << "? " << 1 << " " << i+1 << '\n';
}
cout << "!" << endl;
for(int i = 1; i < k; ++i){
int e, f, g, h; cin >> e >> f >> g >> h;
//rootdist[i] = e; // calculates all distance from root on the first tree(the joint one)
//setree.join(u, v, g, h, stb); //uses graph structure to create the lca tree from the second tree, join erase a big edge, add a node, and join 2 small edges to the initial points
}
//setree.create(); //crate sum sparse table
for(int i = 0; i < t; ++i){
int u, v; cin >> u >> v;
u--;
v--;
cout << "0 0";
cout << '\n';
}
cout << endl;
}
int main(){
tc();
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |