Submission #524242

#TimeUsernameProblemLanguageResultExecution timeMemory
524242CSQ31Cave (IOI13_cave)C++17
100 / 100
787 ms584 KiB
#include <stdio.h> #include <stdlib.h> #include <vector> #include <iostream> #include "cave.h" using namespace std; void exploreCave(int n) { int a[n],s[n]; vector<int>c; for(int i=0;i<n;i++){ c.push_back(i); a[i] = 0; } for(int i=0;i<n;i++){ int res = tryCombination(a); int m = c.size(); if(res!= -1 && res <= i){ int l = 0,r = m-1; while(r>l){ int mid = (l+r)/2; for(int j=0;j<=mid;j++)a[c[j]]^=1; int cc = tryCombination(a); if(cc==-1 || cc>i)r = mid; else l = mid+1; for(int j=0;j<=mid;j++)a[c[j]]^=1; } s[i] = c[r]; a[c[r]]^=1; c.erase(c.begin() + r); }else{ int l = 0,r = m-1; while(r>l){ int mid = (l+r)/2; for(int j=0;j<=mid;j++)a[c[j]]^=1; int cc = tryCombination(a); if(cc!=-1 && cc<=i)r = mid; else l = mid+1; for(int j=0;j<=mid;j++)a[c[j]]^=1; } s[i] = c[r]; c.erase(c.begin() + r); } } int b[n]; for(int i=0;i<n;i++)b[s[i]] = i; answer(a,b); }
#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...