| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 | 
|---|---|---|---|---|---|---|---|
| 1124336 | oliverurdzik | 동굴 (IOI13_cave) | C++20 | 0 ms | 0 KiB | 
#include <bits/stdc++.h>
#include "cave.h"
using namespace std;
using ll = long long;
using vi = vector<int>;
using vvi = vector<vector<int>>;
using pii = pair<int, int>;
using vll = vector<long long>;
using vvll = vector<vector<long long>>;
using vstr = vector<string>;
using str = string;
#define PB push_back
#define ALL(x) (x).begin(), (x).end()
#define FOR(i, s, f) for (int(i) = (s); i < (f); (i)++)
#define ROF(i, s, f) for (int(i) = (s); i > (f); (i)--)
#define loop(x) for (int i = 0; i < (x); i++)
#define all(x) x.begin(), x.end()
str to_bin(int a){
    return bitset<13>(a).to_string();
}
int main(){
    cout << to_bin(5);  
}
vector<int> permu(int a, int n){
    vector<int> ans;
    FOR(i,0,n){
        if(to_bin(i)[a] == 1) ans.PB(i);
    }
    return ans;
}
void answer(int S[],int D[]);
int tryCombination(int S[]);
void exploreCave(int n){
    
    vector<int> paky(n,1);
    vector<int> doterajsie= {};
    FOR(i,0,n){
        str tento = "0000000000000";
        vi komb = doterajsie;
        FOR(j,0,13){
            vector<int> komb(n, 0);
            for(auto k : permu(i, n)){
                if(k >=i) komb[k] = 1;
            }
            int vyskusane = tryCombination(&komb[0]);
            if (vyskusane == -1 or vyskusane > i){
                tento[j] = 1;
            } 
        }
        doterajsie.PB(stoi(tento, nullptr, 2));
        
    }
    
    vi polohy(n, 0);
    FOR(i,0,n){
        int vyskusane = tryCombination(&polohy[0]);
        if(vyskusane<i) polohy[doterajsie[i]] = 1;
        
    }        
    
    answer(&polohy[0],&doterajsie[0])
}
