Submission #650798

#TimeUsernameProblemLanguageResultExecution timeMemory
650798LitusianoCave (IOI13_cave)C++14
13 / 100
2084 ms628 KiB
#include "cave.h" #include<bits/stdc++.h> using namespace std; //#define int long long map<int,int> used; void convert(int (&v)[],int idx, int val){ for(int i = 0; i<= idx; i++){ if(used[i]) continue; v[i] = val; } } void exploreCave(int N) { /* ... */ int v[N]; for(int i = 0; i<N; i++){ v[i] = 0; } int s[N]; // Busco combinacio correcte for(int i = 0; i<N; i++){ bool ok = 0; int l = -1; int r = N-1; int val = 0; convert(v,N-1,0); if(tryCombination(v) == i) val = 1; while(r > l+1){ int m = (l+r)/2; convert(v,m,val); // si s'ha obert, int x = tryCombination(v); if (x == -1){ ok = 1; break; } if(x == i){ //tancat l = m; } else r = m; convert(v,m,val^1); } if(ok) break; int prev = v[l]; v[l] = val; if(!used[l] && tryCombination(v) > i){ used[l] = 1; } else{ used[r] = 1; v[r] = val; v[l] = prev; } } for(int i = 0; i<N; i++){ v[i] ^= 1; s[i] = tryCombination(v); v[i] ^= 1; } answer(v,s); //for(int i = 0; i<N; i++) cout<<v[i]<<" "; cout<<endl; //for(int i = 0; i<N; i++) cout<<s[i]<<" "; cout<<endl; return; }
#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...