Submission #1195860

#TimeUsernameProblemLanguageResultExecution timeMemory
1195860Nonbangkok동굴 (IOI13_cave)C++17
100 / 100
514 ms540 KiB
#include <bits/stdc++.h>
#include "cave.h"
#define coutf(n, m) cout << fixed << setprecision(n) << m
#define forr(i, a, n) for (int i = a; i < n; i++)
#define forl(i, a, n) for (int i = a; i > n; i--)
#define macos ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
#define endll "\n"
#define sp " "
typedef long long ll;
using namespace std;

const int M = 5010;
int k;
int S[M],D[M],test[M];
bool fix[M];

void exploreCave(int n) {
    forr(i,0,n){ // loop the door
        // int i = 0;
        k = (tryCombination(S)==i);

        int l = 0, r = n - 1,m;
        while(l<r){ // binary search to find the position of river
            m = (l+r) >> 1;
            forr(j,0,n){
                if(fix[j])test[j] = S[j];
                else if(l<=j&&j<=m)test[j] = k;
                else test[j] = 1 - k;
                // cout << test[j] << sp;
            }
            // cout << endll;
            // cout << "B : " << l << sp << m << sp << r << sp << (tryCombination(test)==i) << endll;
            if(tryCombination(test)==i)l = m + 1;
            else r = m;
        }
        // cout << "STDOUT : ";
        // cout << l << sp << m << sp << r << endll;
        S[l] = k;
        D[l] = i;
        fix[l] = true;   
    }
    answer(S,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...