# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1124338 | 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(){
}
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]);
}