Submission #537079

#TimeUsernameProblemLanguageResultExecution timeMemory
537079fuad27Cave (IOI13_cave)C++17
13 / 100
780 ms2400 KiB
#include "cave.h" #include <bits/stdc++.h> using namespace std; template<typename T> auto operator<<(ostream &os, T&v)->decltype(v.begin(), os){ os << "["; int f = 0; for(auto i:v) { if(f++)os << ", "; os << i; } os << "]"; return os; } template<typename F, typename S> ostream& operator<<(ostream &os, pair<F, S> const &p) { return os << "(" << p.first << ", " << p.second << ")"; } ostream& operator<<(ostream &os, string s) { for(char i:s){ os << i; } return os; } void debug(){} template<typename T, typename... V> void debug(T t, V... v) { cerr << t; if(sizeof...(v)) { cerr << ", "; debug(v...); } } #ifdef LOCAL #define dbg(x...) cerr << "[" << #x << "]: " << "["; debug(x); cerr << "]\n"; #else #define dbg(x...) #endif vector<int> used; vector<int> numbers; vector<int> ans1; vector<int> ans2; bool check = false; void find_kth(int k, int n, int l, int r) { dbg(k, l, r, numbers); if(l == r) { dbg(l, k); ans1[l] = k; used[l] = true; numbers[l] = 0; } else { int num[n]; for(int i = 0;i<n;i++) { if(used[i])num[i] = 0; else num[i] = 1; } int mid = (l+r)/2; for(int i = l;i<=mid;i++) { num[i] = 0; } vector<int> tmp(n, 0); for(int i = 0;i<n;i++)tmp[i] = num[i]; dbg(tmp, tryCombination(num)); int t = tryCombination(num); if(t > k or t == -1) { find_kth(k,n,l,mid); } else { find_kth(k, n, mid+1, r); } } } void exploreCave(int N) { int a1[N], a2[N]; numbers = used = ans1 = ans2 = vector<int> (N, 0); for(int i = 0;i<N;i++)numbers[i] = 1; for(int i = 0;i<N;i++) { find_kth(i, N, 0, N-1); } for(int i = 0;i<N;i++) { a1[i] = ans1[i]; a2[i] = 0; } answer(a2, a1); }
#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...