제출 #393933

#제출 시각아이디문제언어결과실행 시간메모리
393933Gamma동굴 (IOI13_cave)C++14
0 / 100
1067 ms420 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; } } } } for(int j = 0; j < N; j++) a[d[j]] = j; // printf("\n%d %d\n", a[i], s[d[i]]); } 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...