Submission #1344229

#TimeUsernameProblemLanguageResultExecution timeMemory
1344229srividya_06Staring Contest (BOI23_staringcontest)C++20
0 / 100
2025 ms412 KiB
#include <bits/stdc++.h>
#define int long long
#define REP(i,a,b) for(int i = a; i<b; i++)
#define RREP(i,a,b) for(int i = a; i>b; i--)
using namespace std;
int INF = 1e18;
int32_t main() {
    int n, val;
    cin>>n;
    vector<int> res(n);
    if(n<=3){
        REP(i,0,n-1){
            REP(j,i+1,n){
                cout<<"? "<<i+1<<' '<<j+1<<endl;
                cin>>val;
                res[i] = max(res[i],val);
                res[j] = max(res[j],val);
            }
        }
    }
    else{
        REP(i,0,2){
            REP(j,i+1,3){
                cout<<"? "<<i+1<<' '<<j+1<<endl;
                cin>>val;
                res[i] = max(res[i],val);
                res[j] = max(res[j],val);
            }
        }
        int mx = max_element(res.begin(),res.begin()+3)-res.begin();
        REP(i,3,n){
            if(i == mx) continue;
            cout<<"? "<<mx+1<<' '<<i+1<<endl;
            cin>>val;
            if(val==res[mx]) {
                res[i] = val;
                mx = i;
                i = -1;
            }
            else if(val>res[mx]){
                res[mx] = val;
                i = -1;
            }
            else res[i] = val;
        }
    }
    cout<<"! ";
    REP(i,0,n){
        cout<<res[i]<<' ';
    }
    cout<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...