# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
580765 | Omar_Elgedawy | Lost in the cycle (IOI19_cycle) | C++14 | 1 ms | 208 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
//#include "grader.cpp"
#include "cycle.h"
using namespace std;
void escape(int n) {
if(jump(0)){
int loc=0,one=0;
int l=n/2-2,r=n-1;
loc+=n/2;
// cout<<n/2<<endl<<n/2+n%2<<endl;
if(jump(n/2)){
return;
}
loc=(loc+n/2+n%2)%n;
jump(n/2+n%2);
// cout<<loc<<endl;
while(l<=r){
int m=(r+l)/2;
int dist;
if(m>loc)
dist=m-loc;
else
dist=((n-loc)+m)%n;
loc=(loc+dist)%n;
// cout<<loc<<' '<<dist<<endl;
if(jump(dist)){
r=m-1;
one=loc;
}
else{
l=m+1;
}
}
// cout<<loc<<' '<<one<<' ';
if(loc<one){
loc=(loc+(one-loc))%n;
jump(one-loc);
}
else if(loc>one){
loc=(loc+(n-loc)+one)%n;
jump(((n-loc)+one)%n);
}
// cout<<(loc+n/2)%n<<endl;
jump(n/2);
}
else{
int loc=0,one;
int l=1,r=n/2+1;
while(l<=r){
int m=(r+l)/2;
int dist;
if(m>loc)
dist=m-loc;
else
dist=(n-loc)+m;
loc=(loc+dist)%n;
if(jump(dist)){
r=m-1;
one=loc;
}
else{
l=m+1;
}
}
if(loc<one)
jump(one-loc);
else if(loc>one)
jump((n-loc)+one);
jump(n/2);
}
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |