제출 #1284084

#제출 시각아이디문제언어결과실행 시간메모리
1284084talyCave (IOI13_cave)C++20
0 / 100
64 ms484 KiB
#include <bits/stdc++.h> #define pii pair<int, int> #define tii tuple<int, int, int> #define lli long long // #define f first // #define s second #define pb push_back using namespace std; #include "cave.h" // void exploreCave(int n); // void answer(int S[],int D[]); // int tryCombination(int S[]); void solve(int l, int r, int x, bool b, int s[], int d[]){//b=1 se estava para baixo antes if(l==r){ s[l]=0; int tc = tryCombination(s); if(tc==x)s[l]=1; else s[l]=0; d[l]=x; return; } int mid = (l+r)/2; for (int i=l; i<=mid; i++){ if(d[i]==-1){ s[i]=1-s[i]; } } int tc = tryCombination(s); if(tc==x&&b==1){ solve(mid+1, r, x, 1, s, d); }else if (tc==x&&b==0){ solve(l, mid, x, 1, s, d); }else if (tc!=x&&b==0){ solve(mid+1, r, x, 0, s, d); }else{ solve(l, mid, x, 0, s, d); } } void exploreCave(int n){ int s[n], d[n]; for (int i=0; i<n; i++){ d[i]=-1; s[i]=0; } // vector<int> s(n), d(n, -1); int c = 0; for (int i=0; i<n; i++){ int tc = tryCombination(s); if(tc==-1)break; if(tc>i){ solve(0, n-1, i, 0, s, d); }else{ solve(0, n-1, i, 1, s, d); } } answer(s, 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...