Submission #1351514

#TimeUsernameProblemLanguageResultExecution timeMemory
1351514srividya_06Staring Contest (BOI23_staringcontest)C++20
43 / 100
6 ms444 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;
int32_t main(){
    int n,jk,j,k;
    cin>>n;
    vector<int> s(n);
    iota(s.begin(),s.end(),0);
    mt19937 rng(42); 
    shuffle(s.begin(), s.end(), rng);
    cout<<"? "<<s[0]+1<<' '<<s[1]+1<<endl;
    j = s[0];
    k = s[1];
    cin>>jk;
    vector<int> res(n);
    for(int i:s){
        if(i == s[0] || i == s[1]) continue;
        int ij, ik;
        cout<<"? "<<i+1<<' '<<j+1<<endl;
        cin>>ij;
        cout<<"? "<<i+1<<' '<<k+1<<endl;
        cin>>ik;
        if(ij == ik) res[i] = ij;
        else if(ij == jk){
            res[j] = ij;
            j = i;
            jk = ik;
        }
        else{
            res[k] = ik;
            k = i;
            jk = ij;
        }
    }
    res[j] = res[k] = jk;
    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...