제출 #917805

#제출 시각아이디문제언어결과실행 시간메모리
917805Macker동굴 (IOI13_cave)C++14
100 / 100
553 ms600 KiB
#include "cave.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; #define all(v) v.begin(), v.end() //#pragma GCC optimize("Ofast") //#pragma GCC target("avx2") void exploreCave(int N) { vector<int> doorIds(N); vector<int> rightPos(N, -1); for (int i = 0; i < N; i++) { int comb[N]; for (int j = 0; j < N; j++) { comb[j] = rightPos[j]; if(comb[j] == -1) comb[j] = 0; } int x = tryCombination(comb); bool base = !(x > i || x == -1); int l = 0, r = N - 1, mid; while(l < r){ mid = (l + r) / 2; for (int j = 0; j < N; j++) { comb[j] = rightPos[j]; if(comb[j] == -1){ if(j <= mid) comb[j] = base; else comb[j] = base ^ 1; } } int x = tryCombination(comb); if(x > i || x == -1) r = mid; else l = mid + 1; } doorIds[i] = l; rightPos[l] = base; } int ansId[N], ansR[N]; for (int i = 0; i < N; i++) { ansId[doorIds[i]] = i; ansR[i] = rightPos[i]; } answer(ansR, ansId); }
#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...