Submission #228263

#TimeUsernameProblemLanguageResultExecution timeMemory
228263bharat2002Cave (IOI13_cave)C++14
100 / 100
349 ms632 KiB
#include "cave.h" #include<bits/stdc++.h> using namespace std; const int N=5e3 +10; const int mod=1e9 + 7; #define pii pair<int, int> #define f first #define s second #define mp make_pair #define FOR(i, n) for(int i=1;i<=n;i++) #define TRACE(x) cerr << #x << " = " << x << endl //Trace prints the name of the variable and the value. int n;int cur[N], match[N], ans[N];//match is D answer function ka. cur will be S. bool change[N]; void exploreCave(int NC) { n=NC; for(int i=0;i<n;i++) { change[i]=1;cur[i]=0; } for(int i=0;i<n;i++) { int ret=tryCombination(cur);int corr; if(ret==i) corr=1; else corr=0; int low=0, high=n-1; while(high-low>1) { int mid=(low+high)/2; for(int j=low;j<=mid;j++) cur[j]^=change[j]; ret=tryCombination(cur); if(corr==0) { if(ret>i||ret==-1) low=mid+1; else high=mid; } else { if(ret>i||ret==-1) high=mid; else low=mid+1; } for(int j=low;j<=mid;j++) if(change[j]) cur[j]=0; } if(corr==1) { cur[high]^=change[high];ret=tryCombination(cur); if(ret>i||ret==-1) {low=high;} } else { cur[high]^=change[high];ret=tryCombination(cur); if(ret==i) {low=high;} } change[low]=0;cur[low]=corr;match[low]=i; for(int j=0;j<n;j++) if(change[j]) cur[j]=0; } answer(cur, match); }
#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...