Submission #1362489

#TimeUsernameProblemLanguageResultExecution timeMemory
1362489AvianshMineral deposits (BOI23_mineraldeposits)C++20
9 / 100
1 ms468 KiB
#include <bits/stdc++.h>

using namespace std;

signed main(){
    int b,k,w;
    cin >> b >> k >> w;
    cout << "? " << -b << " " << -b << endl;
    vector<int>bot(k);
    for(int i = 0;i<k;i++){
        cin >> bot[i];
    }

    cout << "? " << -b << " " << b << endl;
    vector<int>top(k);
    for(int i = 0;i<k;i++){
        cin >> top[i];
    }
    //find intersections
    set<array<int,2>>pts;
    for(int i : bot){
        for(int j : top){
            if(i+j>=2*b){
                //intersect
                int dist = (i+j-2*b);
                if(dist%2){
                    //bad intersection
                    continue;
                }
                //good intersection
                int y = b-j+dist/2;
                int x = -b+dist/2;
                pts.insert({x,y});
            }
        }
    }
    //for testing just check one by one
    vector<array<int,2>>ans;
    for(array<int,2>a:pts){
        cout << "? " << a[0] << " " << a[1] << "\n";
        vector<int>cur(k);
        for(int i = 0;i<k;i++){
            cin >> cur[i];
        }
        for(int i = 0;i<k;i++){
            if(cur[i]==0){
                //in case multiple at same place
                ans.push_back({a[0],a[1]});
            }
            else{
                //sorted
                break;
            }
        }
    }
    assert(ans.size()==k);
    cout << "! ";
    for(array<int,2>a:ans){
        cout << a[0] << " " << a[1] << " ";
    }
    cout << endl;
    return 0;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...