제출 #572254

#제출 시각아이디문제언어결과실행 시간메모리
572254MadokaMagicaFanCave (IOI13_cave)C++14
100 / 100
510 ms988 KiB
#include "bits/stdc++.h" #include "cave.h" using namespace std; using ll = long long; const ll inf = 1e9; const int md1 = 1e9+7; const int md2 = 998244353; #define all(v) v.begin(), v.end() #define rall(v) v.rbegin(), v.rend() #define sz(v) ((int)v.size()) #define forn(i,n) for(int i = 0; i < n; ++i) #define forbe(i,b,e) for(int i = b; i < e; ++i) #define pb push_back #define pry puts("YES") #define prn puts("NO") #define endl '\n' #define fst first #define scn second const int N = 5e4; /* void answer(int s[], int d[]); */ /* int tryCombination(int s[]); */ #ifdef ONPC void answer(vector<int> s, vector<int> d) { cout << "Answer :\n\t"; for (int i = 0; i < sz(s); ++i) { cout << s[i] << ' '; } cout << "\n\t"; for (int i = 0; i < sz(d); ++i) { cout << d[i] << ' '; } cout << endl; } int tryCombination(vector<int> s) { cout << "Question :\n\t"; for (int i = 0; i < sz(s); ++i) { cout << s[i] << ' '; } cout << endl; int ans; cin >> ans; return ans; } #endif bitset<N> c; int ask(int n, int l, int r, int v, int *p, int *s) { for (int i = 0; i < n; ++i) s[i] = p[i]; for (int i = l; i < r; ++i) { if (!c[i]) s[i] = v; } return tryCombination(s); } int test(int n, int x, int* p, int *s) { int l = 0; int r = n; int mid; int ans; int val = ask(n,0,r,0,p,s); if (val == -1 || val > x) val = 0; else val = 1; for (int i = 0; i < n; ++i) { if (!c[i]) p[i] = !val; } while (l < r-1) { mid = (l+r)>>1; ans = ask(n, l,mid, val, p, s); if (ans == -1 || ans > x) r = mid; else l = mid; } c[l] = 1; p[l] = val; return l; } void exploreCave(int n) { int p[N]; int s[N]; int d[N]; for (int i = 0; i < n; ++i) p[i] = s[i] = d[i] = 0; for (int i = 0; i < n; ++i) { d[test(n,i,p,s)] = i; } answer(p,d); return; } #ifdef ONPC void solve() { exploreCave(4); } int32_t main() { int t = 1; /* cin >> t; */ while(t--) solve(); } #endif
#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...