제출 #1291059

#제출 시각아이디문제언어결과실행 시간메모리
1291059lechaa동굴 (IOI13_cave)C++20
100 / 100
392 ms524 KiB
#include "cave.h" #include <bits/stdc++.h> using namespace std; // void exploreCave(int n) { int d[n]; int cur[n]; for(int i = 0; i < n; i++){ d[i] = -1; cur[i] = 0; } for(int i = 0; i < n; i++){ int j = tryCombination(cur); if(j == i){ int low = 0; int top = n-i; int ns = 0; while(low <= top){ int mid = (low + top)/2; int ncur[n]; int co = 0; int l = 0; for(int y = 0; y < n; y++){ if(d[y] != -1 || co >= mid){ ncur[y] = cur[y]; }else{ l = y; co++; ncur[y] = 1; } } int h = tryCombination(ncur); if(h > i || h == -1){ ns = l; top = mid-1; }else{ low = mid+1; } } cur[ns] = 1; d[ns] = i; }else{ int low = 0; int top = n-i; int ns = 0; while(low <= top){ int mid = (low + top)/2; int ncur[n]; int co = 0; int l = 0; for(int y = 0; y < n; y++){ if(d[y] != -1 || co >= mid){ ncur[y] = cur[y]; }else{ l = y; co++; ncur[y] = 1; } } int h = tryCombination(ncur); if(h <= i && h >= 0){ ns = l; top = mid-1; }else{ low = mid+1; } } d[ns] = i; } } answer(cur, 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...