Submission #99799

#TimeUsernameProblemLanguageResultExecution timeMemory
99799MohamedAhmed0Cave (IOI13_cave)C++14
12 / 100
268 ms524 KiB
#include "cave.h" #include <bits/stdc++.h> using namespace std ; const int MAX = 5005 ; int s[MAX] , d[MAX] , arr[MAX] , last , done[MAX]; int now ; bool check(int l , int mid) { for(int i = l ; i <= mid ; ++i) { if(done[i]) continue ; s[i] = !s[i] ; } int x = tryCombination(s) ; for(int i = l ; i <= mid ; ++i) { if(done[i]) continue; s[i] = !s[i] ; } if(x > now || x == -1) return 1 ; return 0 ; } void exploreCave(int N) { memset(s , 0 , sizeof(s)); for(int i = 0 ; i < N ; ++i) { now = i ; last = tryCombination(s) ; if(last > i || last == -1) { for(int j = 0 ; j < N ; ++j) { if(done[j]) continue; s[j] = !s[j] ; } } int l = 0 , r = N-1 , ans = N-1; while(l <= r) { int mid = (l + r) / 2 ; if(check(l , mid)) ans = mid , r = mid-1 ; else l = mid+1 ; } d[i] = ans ; done[ans] = 1 ; s[ans] = !s[ans] ; } 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...