제출 #1232501

#제출 시각아이디문제언어결과실행 시간메모리
1232501countless동굴 (IOI13_cave)C++20
0 / 100
2095 ms1092 KiB
#include "cave.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; #define sp <<" "<< #define endl "\n" void exploreCave(int N) { int flip[N], conn[N], attempt[N], bit[N]; memset(flip, 0, sizeof(flip)); memset(bit, 0, sizeof(bit)); memset(attempt, 0, sizeof(attempt)); set<int> avail; for (int i = 0; i < N; i++) { avail.insert(i); } for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { attempt[j] = flip[j]; } int query = tryCombination(attempt); if (query < i and query != -1) bit[i] = 1; set<int> use = avail; while (use.size() >= 2) { set<int> left, right; int m = use.size(); for (int i = 0; i < m/2; i++) { auto it = use.begin(); left.insert(*it); use.erase(it); } for (int i = 0; i < (m+1)/2; i++) { auto it = use.begin(); right.insert(*it); use.erase(it); } for (int j = 0; j < N; j++) { attempt[j] = flip[j]; } for (auto &j : left) { attempt[j] = bit[i]; } query = tryCombination(attempt); if (query < i and query != -1) { use = right; } else { use = left; } } int ind = *use.begin(); flip[ind] = bit[i]; conn[ind] = i; avail.erase(ind); } answer(flip, conn); }
#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...