Submission #1167116

#TimeUsernameProblemLanguageResultExecution timeMemory
1167116trandangquangLibrary (JOI18_library)C++20
100 / 100
121 ms480 KiB
#include"library.h"

#include<bits/stdc++.h>
using namespace std;

// interactor's
// int Query(const vector<int>& M){
//     vector<int>haiz={1,2};
//     int hi=haiz.size();
//     vector<int> lm(hi);
//     for(int j=0; j<hi; ++j){
//         if(M[j]==1){
//             for(int i=0; i<hi; ++i) if(haiz[i]==j+1) lm[i]=1;
//         }       
//     }
//     int res=lm[0]==1;
//     for(int i=1; i<hi; ++i) res+=(lm[i-1]==0&&lm[i]==1);
//     return res;
// }
// void Answer(const vector<int>& res){
//     cout<<"! ";
//     for(int i:res) cout<<i<<" ";
//     cout<<endl;  
// }
// 

const int N=1010;

int n,suf[N]; bool vis[N];
vector<int> adj[N],res;

void dfs(int u){
    vis[u]=true; res.emplace_back(u+1);
    for(int v:adj[u]) if(!vis[v]) dfs(v);   
}

void Solve(int _n){
    n=_n;
    if(n==1) return Answer({1}), void();
    
    vector<int> v(n);
    suf[n-1]=1; v[n-1]=1;
    for(int i=n-2; i>=0; --i){
        v[i]=1;
        suf[i]=Query(v);
    }
    for(int _=0; _<n; ++_) v[_]=0;

    for(int i=0; i<n; ++i){
        for(int j=0; j<2; ++j){
            int l=i+1,r=n-1,res=-1;
            while(l<=r){
                int m=(l+r)>>1;
                
                for(int _=0; _<n; ++_) v[_]=0;
                v[i]=1;
                for(int _=m; _<n; ++_) v[_]=1;
                int tmp=Query(v);

                if(suf[m]-tmp+1>j){
                    res=m;
                    l=m+1;   
                }   
                else{
                    r=m-1;
                }
            }       
            if(res==-1) break;
            adj[res].emplace_back(i);
            adj[i].emplace_back(res);
        }
    } 

    for(int i=0; i<n; ++i){
        if(adj[i].size()==1){
            dfs(i);
            break;
        }  
    }
    Answer(res);
}   

// int main(){
//     cin.tie(0)->sync_with_stdio(0);
//     Solve(2);
// }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...