Submission #1283979

#TimeUsernameProblemLanguageResultExecution timeMemory
1283979mariaclaraCave (IOI13_cave)C++20
100 / 100
391 ms504 KiB
#include "cave.h"

void exploreCave(int N) {
    // ans(S, D)
    // D[i] é a porta conectada a alavanca i
    // 70000 perguntas
    // N <= 5000

    int S[N], fixo[N], D[N];
    for(int i = 0; i < N; i++) S[i] = fixo[i] = D[i] = 0;

    for(int i = 0; i < N; i++) {
        
        for(int j = 0; j < N; j++)
            if(!fixo[j]) S[j] = 0;

        int rsp = tryCombination(S), flag = 0;

        if(rsp <= i and rsp != -1) flag = 1;

        int l = 0, r = N-1;

        while(l < r) {
            int mid = (l+r)/2;

            for(int j = 0; j <= mid; j++)
                if(!fixo[j]) S[j] = flag;
            
            for(int j = mid+1; j < N; j++)
                if(!fixo[j]) S[j] = 1-flag;

            int rsp1 = tryCombination(S);
            if(rsp1 > i or rsp1 == -1) r = mid;
            else l = mid+1;
        }

        D[l] = i;
        S[l] = flag;
        fixo[l] = 1;
    }

    answer(S, D);

    return;
}
#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...