Submission #393934

#TimeUsernameProblemLanguageResultExecution timeMemory
393934GammaCave (IOI13_cave)C++14
0 / 100
988 ms372 KiB
#include "cave.h" #include <bits/stdc++.h> void exploreCave(int N) { int y, d[N], a[N], s[N]; memset(d, -1, sizeof d); for(int i = 0; i < N; i++) { for(int j = 0; j < N; j++) { a[j] = 0; } for(int j = 0; j < i; j++) { a[d[j]] = s[d[j]]; } y = tryCombination(a); if(y <= i && y != -1) { int S = 0, e = N - 1, mid; while(S <= e) { mid = (S + e) / 2; for(int j = S; j < mid; j++) { a[j] = 1; } for(int j = 0; j < i; j++) { a[d[j]] = s[d[j]]; } // printf("%d ", a[0]); y = tryCombination(a); // if(i == 3) printf("%d\t", y); if(y <= i && y != -1) { a[mid] = 1; y = tryCombination(a); if(y <= i && y != -1) { S = mid + 1; } else { d[i] = mid; s[mid] = 1; break; } } else { e = mid - 1; for(int j = S; j < mid; j++) { a[j] = 0; } for(int j = 0; j < i; j++) { a[d[j]] = s[d[j]]; } } } } else { int S = 0, e = N - 1, mid; while(S <= e) { mid = (S + e) / 2; memset(a, 0, sizeof(a)); for(int j = S; j < mid; j++) { a[j] = 1; } for(int j = 0; j < i; j++) { a[d[j]] = s[d[j]]; } y = tryCombination(a); if(y <= i && y != -1) { e = mid - 1; for(int j = S; j < mid; j++) { a[j] = 0; } for(int j = 0; j < i; j++) { a[d[j]] = s[d[j]]; } } else { a[mid] = 1; y = tryCombination(a); if(y <= i && y != -1) { d[i] = mid; s[mid] = 0; break; } else { S = mid + 1; } } } } // printf("\n%d %d\n", a[i], s[d[i]]); } for(int j = 0; j < N; j++) a[d[j]] = j; answer(s, a); }
#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...