제출 #1291857

#제출 시각아이디문제언어결과실행 시간메모리
1291857hssaan_arif동굴 (IOI13_cave)C++20
100 / 100
418 ms552 KiB
#include <bits/stdc++.h>
#include "cave.h"
using namespace std;

#define endl "\n"
#define pb push_back
// #define int long long
#define fi first
#define se second

int n , S[5005] = {} , D[5005] = {} , V[5005] , T[5005];

void doit(int l , int r , int t){
    for (int i=0 ; i<n ; i++){
        if (T[i]!=-1){
            // cout << T[i] << ' ';
            continue;
        }
        if (l <= i && i <= r){
            T[i] = t;
        }else{
            T[i] = !t;
        }
    }
}
void exploreCave(int N) {
    n = N;
    for (int i=0;i<n;i++) S[i] = -1;
    for (int i=0 ; i<n ; i++){
        int l=0 , r=n-1;
        int u = tryCombination(V);
        bool ty = 0;
        if (u==-1 || u > i){

        }else{
            ty = 1;
        }
        while(l <= r){
            int mid = (l+r)>>1;
            for (int k=0;k<n;k++) T[k] = S[k];
            doit(l,mid,ty);
            int u = tryCombination(T);
            // cout << l << ' ' << mid << ' ' << u << endl;
            if (u > i || u == -1){
                r = mid-1;
            }else{
                l = mid+1;
            }
        }
        // cout << ty << ' ' << l << endl;
        D[l] = i;
        V[l] = ty;
        S[l] = ty;
    }
    
    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...