제출 #34805

#제출 시각아이디문제언어결과실행 시간메모리
34805SYury동굴 (IOI13_cave)C++11
0 / 100
459 ms520 KiB
#include "cave.h" #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double dbl; typedef pair<int, int> pii; #define forn(i, n) for (int i = 0; i < (int)(n); ++i) #define sqr(x) (x)*(x) #define F(i, l, r) for(int i = (l); i < (r); i++) #define DF(i, l, r) for(int i = (l); i > (r); i--) #define I(x, a) for(auto x : (a)) #define mp make_pair #define X first #define Y second #define clean(x) memset((x), 0, sizeof(x)) #define ret return #define cont continue #define brk break #define ins insert #define all(x) (x).begin(),(x).end() #define sz(x) (int)(x).size() #define sync ios_base::sync_with_stdio(false);cin.tie(0) #define pb push_back #define fin(x) freopen(x, "r", stdin) #define fout(x) freopen(x, "w", stdout) #define y1 fjfg const int maxn = 5e3 + 3; int state[maxn], known[maxn]; int what[maxn]; void exploreCave(int n){ F(i, 0, n)state[i] = 0; F(i, 0, n)known[i] = -1; F(i, 0, n){ int l = 0, r = n - 1; F(j, 0, n)if(known[j] != -1){state[j] = known[j];}else{state[j] = 0;} int init = tryCombination(state); bool open = init > i; while(r > l){ int mid = (l + r) >> 1; F(j, 0, n)if(known[j] != -1){state[j] = known[j];}else{state[j] = (j <= mid) ? 1 : 0;} int res = tryCombination(state); bool copen = res > i; if(copen != open)r = mid; else l = mid + 1; } what[i] = l; if(open)known[i] = 0; else known[i] = 1; } answer(known, what); }
#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...