Submission #974666

#TimeUsernameProblemLanguageResultExecution timeMemory
974666ivazivaCave (IOI13_cave)C++14
0 / 100
2041 ms732 KiB
#include <bits/stdc++.h> #include "cave.h" using namespace std; #define MAXN 5010 int pozicija[MAXN]; int vrata[MAXN]; bool pronadjeno[MAXN]; set<long long> nepronadjeni; void exploreCave(int N) { for (long long i=0;i<N;i++) pozicija[i]=0; for (long long i=0;i<N;i++) pronadjeno[i]=false; for (long long i=0;i<N;i++) vrata[i]=-1; for (long long i=0;i<N;i++) nepronadjeni.insert(i); for (long long i=0;i<N;i++) { long long ans0=tryCombination(pozicija); if (ans0>i or ans0==-1) { long long l=0,r=nepronadjeni.size()-1; long long rez=-1; while (l<=r) { long long mid=(l+r)/2; long long brojac=0; for (long long p:nepronadjeni) { if (brojac>mid) break; pozicija[p]=1-pozicija[p];brojac++; } long long ans=tryCombination(pozicija); if (ans>i or ans==-1) {rez=mid;r=mid-1;} else l=mid+1; brojac=0; for (long long p:nepronadjeni) { if (brojac>mid) break; pozicija[p]=1-pozicija[p];brojac++; } } long long brojac=0; long long val=-1; for (long long p:nepronadjeni) { if (brojac==rez) {val=p;break;} else brojac++; } pozicija[val]=1;vrata[val]=i; pronadjeno[val]=true; } else { long long l=0,r=nepronadjeni.size()-1; long long rez=-1; while (l<=r) { long long mid=(l+r)/2; long long brojac=0; for (long long p:nepronadjeni) { if (brojac>mid) break; pozicija[p]=1-pozicija[p];brojac++; } long long ans=tryCombination(pozicija); if (ans==i) {rez=mid;r=mid-1;} else l=mid+1; brojac=0; for (long long p:nepronadjeni) { if (brojac>mid) break; pozicija[p]=1-pozicija[p];brojac++; } } long long brojac=0; long long val=-1; for (long long p:nepronadjeni) { if (brojac==rez) {val=p;break;} else brojac++; } vrata[val]=i; pronadjeno[val]=true; } } answer(pozicija,vrata); }
#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...