Submission #791705

#TimeUsernameProblemLanguageResultExecution timeMemory
791705ono_de206Prize (CEOI22_prize)C++17
0 / 100
622 ms8120 KiB
#include<bits/stdc++.h> using namespace std; // #define fast ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); // #define in insert // #define all(x) x.begin(),x.end() // #define pb push_back // #define eb emplace_back // #define ff first // #define ss second // // #define int long long // typedef long long ll; // typedef vector<int> vi; // typedef set<int> si; // typedef multiset<int> msi; // typedef pair<int, int> pii; // typedef vector<pii> vpii; // template<typename T, typename U> // ostream & operator << (ostream &out, const pair<T, U> &c) { // out << c.first << ' ' << c.second; // return out; // } // template<typename T> // ostream & operator << (ostream &out, vector<T> &v) { // const int sz = v.size(); // for (int i = 0; i < sz; i++) { // if (i) out << ' '; // out << v[i]; // } // return out; // } // template<typename T> // istream & operator >> (istream &in, vector<T> &v) { // for (T &x : v) in >> x; // return in; // } // template<typename T> // void mxx(T &a, T b){if(b > a) a = b;} // template<typename T> // void mnn(T &a, T b){if(b < a) a = b;} // const int mxn = 1010; // pair<int , int> P[2][mxn]; // int dis[2][mxn][mxn], lca[2][mxn][mxn]; // struct tree { // int n, lg, cnt; // vector<int> dep; // vector<vector<int>> jump, g; // bool did; // tree(int _n) : n(_n) { // dep.resize(n + 1); // g.resize(n + 1); // did = 0; // lg = cnt = 0; // while((1 << lg) < n) lg++; // jump.resize(n + 1, vector<int>(lg)); // } // void build(int to = 1, int fr = 0) { // dep[to] = dep[fr] + 1; // jump[to][0] = fr; // for(int x : g[to]) { // if(x == fr) continue; // build(x, to); // } // } // void add(int x, int y) { // g[x].pb(y); // g[y].pb(x); // cnt++; // if(cnt == n - 1) build(); // } // void buildLCA() { // if(did) return; // did = 1; // for(int j = 1; j < lg; j++) { // for(int i = 1; i <= n; i++) { // jump[i][j] = jump[jump[i][j - 1]][j - 1]; // } // } // } // int lca(int x, int y) { // buildLCA(); // if(dep[x] < dep[y]) swap(x, y); // int dff = dep[x] - dep[y]; // for(int i = 0; i < lg; i++) { // if((dff >> i) & 1) x = jump[x][i]; // } // if(x == y) return x; // for(int i = lg - 1; i >= 0; i--) { // if(jump[x][i] != jump[y][i]) { // x = jump[x][i]; // y = jump[y][i]; // } // } // return jump[x][0]; // } // bool isOn(int x, int y, int z) { // int p = lca(x, y); // if(dep[p] > dep[z]) return 0; // return (lca(x, z) == z || lca(y, z) == z); // } // }; void go() { // int n, k, q, t; // cin >> n >> k >> q >> t; // tree t1(n), t2(n); // for(int i = 1, x; i <= n; i++) { // cin >> x; // // if(x != -1) t1.add(x, i); // } // for(int i = 1, x; i <= n; i++) { // cin >> x; // // if(x != -1) t2.add(x, i); // } // for(int i = 1; i <= k; i++) { // cout << i; // if(i < k) cout << ' '; // } // cout << '\n'; // cout.flush(); // for(int i = 1; i < k; i++) { // cout << "? " << i << ' ' << i + 1 << '\n'; // } // cout << "!\n"; // cout.flush(); // for(int i = 2; i <= k; i++) { // cin >> P[0][i].ff >> P[0][i].ss >> P[1][i].ff >> P[1][i].ss; // } // for(int i = 1; i <= k; i++) { // for(int j = i; j <= k; j++) { // lca[0][i][j] = t1.lca(i, j); // lca[1][i][j] = t2.lca(i, j); // } // } // for(int i = 1; i <= k; i++) { // for(int p = 0; p < 2; p++) { // pair<int, int> dp{0, 0}; // int ls = i; // for(int j = i + 1; j <= k; j++) { // if(lca[p][i][j] == lca[p][ls][j]) dp = {P[p][j].ff - dp.ss + dp.ff, P[p][j].ss}; // else if(lca[p][i][j] == lca[p][i][ls]) dp.ss = P[p][j].ss - P[p][j].ff; // else continue; // ls = j; // dis[p][i][j] = dp.ff + dp.ss; // } // } // } // for(int i = k; i >= 1; i--) { // for(int p = 0; p < 2; p++) { // pair<int, int> dp{0, 0}; // int ls = i; // for(int j = i - 1; j >= 1; j--) { // if(lca[p][i][j] == lca[p][ls][j]) dp = {P[p][j].ss - dp.ss + dp.ff, P[p][j + 1].ff}; // else if(lca[p][i][j] == lca[p][i][ls]) dp.ss = P[p][j + 1].ff - P[p][j + 1].ss; // else continue; // ls = j; // dis[p][j][i] = dp.ff + dp.ss; // } // } // } // vector<pair<int, int>> Q; // for(int i = 1, x, y; i <= t; i++) { // cin >> x >> y; // if(x > y) swap(x, y); // Q.eb(x, y); // } // for(auto it : Q) { // cout << dis[0][it.ff][it.ss] << ' ' << dis[1][it.ff][it.ss] << '\n'; // } // cout.flush(); } int main() { int n, k, q, t; cin >> n >> k >> q >> t; vector<int> p1(n), p2(n); for (int i = 0; i < n; i++) cin >> p1[i]; for (int i = 0; i < n; i++) cin >> p2[i]; for(int i = 1; i <= k; i++) { cout << i << " "; } cout << endl; for(int i = 1; i < k; i++) { cout << "? " << i << " " << i + 1 << endl; } cout << "!" << endl; long long d[4]; for(int i = 1; i < k; i++) { cin >> d[0] >> d[1] >> d[2] >> d[3]; } for(int i = 0; i < t; i++) { int x, y; cin >> x >> y; } for(int i = 0; i < t; i++) { cout << 0 << " " << 0 << endl; } 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...