제출 #815121

#제출 시각아이디문제언어결과실행 시간메모리
815121OrazB동굴 (IOI13_cave)C++14
12 / 100
358 ms560 KiB
#include <bits/stdc++.h> #include "cave.h" using namespace std; #define all(x) (x).begin(), (x).end() #define ll long long int #define pii pair <int, int> #define pb push_back #define ff first #define ss second const int N = 5e3+5; int n, vis[N]; int SS[N], DD[N]; // int tryCombination(int S[]){ // for (int i = 0; i < n; i++){ // if (S[DD[i]] != SS[DD[i]]) return i; // } // return -1; // } // void answer(int S[], int D[]){ // for (int i = 0; i < n; i++){ // if (S[i] != SS[i] or D[i] != DD[i]){cout << "Incorrect"; exit(0);}; // } // cout << "Correct"; // } void exploreCave(int n){ int S[n], D[n]; for (int i = 0; i < n; i++){ S[i] = 0; } int x = tryCombination(S); for (int i = 0; i < n; i++){ int l = 0, r = n-1, pos = 0; while(l <= r){ int md = (l+r)>>1; for (int j = md; j < n; j++){ if (!vis[j]) S[j] = !S[j]; } int new_x = tryCombination(S); if (i == x){ if (new_x == x) r = md - 1; else{ pos = md; l = md + 1; } }else{ if (new_x == i){ pos = md; l = md + 1; }else r = md - 1; } for (int j = md; j < n; j++){ if (!vis[j]) S[j] = !S[j]; } } D[i] = pos; vis[pos] = 1; if (i == x){ S[pos] = !S[pos]; x = tryCombination(S); } } answer(S, D); } // int main () // { // cin >> n; // for (int i = 0; i < n; i++){ // cin >> SS[i]; // } // for (int i = 0; i < n; i++){ // cin >> DD[i]; // } // exploreCave(n); // }
#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...