Submission #1310716

#TimeUsernameProblemLanguageResultExecution timeMemory
1310716putuputuCave (IOI13_cave)C++20
100 / 100
382 ms536 KiB
#include "cave.h"
#include <bits/stdc++.h>
using namespace std;
void exploreCave(int n) {
    vector<int> state(n, 0);      
    vector<int> dswitch(n, 0);    
    vector<int> use(n, 0);        
    for (int h=0; h<n; h++){
        for (int i=0; i<n; i++){
            if (!use[i]){
                state[i]=0;
            } 
        } 
        int a=tryCombination(state.data());
        int ka=(a!=h) ? 0 : 1;
        for (int i=0; i<n; i++){
            if (!use[i]){
                state[i]=1-ka;
            } 
        } 
        int l=0, r=n-1;
        int ans=-1;
        while (l<=r){
            int mid=(l+r)/2;
            for (int i=l; i<=mid; i++){
                if (!use[i]){
                    state[i]=ka;
                } 
            } 
            int a2=tryCombination(state.data());
            if (a2!=h){
                r=mid-1;
                ans=mid;
            }else{
                l=mid+1;
            }
            for (int i=l; i<=mid; i++){
                if (!use[i]){
                    state[i]=1-ka;
                } 
            } 
        }
        if (ans==-1){
            ans=l-1;
        } 
        dswitch[ans]=h; 
        state[ans]=ka;
        use[ans]=1;    
    }
    answer(state.data(), dswitch.data());
}
#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...