Submission #1309636

#TimeUsernameProblemLanguageResultExecution timeMemory
1309636husseinjuandaCave (IOI13_cave)C++20
100 / 100
392 ms520 KiB
#include "cave.h"
#include <bits/stdc++.h>
using namespace std;

//

void exploreCave(int n) {
    int d[n];
    int cur[n];
    for(int i = 0; i < n; i++){
        d[i] = -1;
        cur[i] = 0;
    }
    for(int i = 0; i < n; i++){
        int j = tryCombination(cur);
        if(j == i){
            int low = 0;
            int top = n-i;
            int ns = 0;
            while(low <= top){
                int mid = (low + top)/2;
                int ncur[n];
                int co = 0;
                int l = 0;
                for(int y = 0; y < n; y++){
                    if(d[y] != -1 || co >= mid){
                        ncur[y] = cur[y];
                    }else{
                        l = y;
                        co++;
                        ncur[y] = 1;
                    }
                }
                int h = tryCombination(ncur);
                if(h > i || h == -1){
                    ns = l;
                    top = mid-1;
                }else{
                    low = mid+1;
                }
            }
            cur[ns] = 1;
            d[ns] = i;
        }else{
            int low = 0;
            int top = n-i;
            int ns = 0;
            while(low <= top){
                int mid = (low + top)/2;
                int ncur[n];
                int co = 0;
                int l = 0;
                for(int y = 0; y < n; y++){
                    if(d[y] != -1 || co >= mid){
                        ncur[y] = cur[y];
                    }else{
                        l = y;
                        co++;
                        ncur[y] = 1;
                    }
                }
                int h = tryCombination(ncur);
                if(h <= i && h >= 0){
                    ns = l;
                    top = mid-1;
                }else{
                    low = mid+1;
                }
            }
            d[ns] = i;
        }
    }
    answer(cur, d);
}
#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...