Submission #201714

#TimeUsernameProblemLanguageResultExecution timeMemory
201714stefdascaSnake (CEOI08_snake)C++14
5 / 100
5 ms504 KiB
#include "snakelib.h" #include<bits/stdc++.h> using namespace std; int k, minlen; char x, y; void casework(int &st, int &dr, int mid1, int mid2) { if(x == 's' && y == 's') { minlen = max(minlen, mid2 - mid1); st = (st + mid1) / 2; dr = (dr + mid2) / 2 + k; } if(x == 's' && y == 'f') { st = (st + mid1) / 2 - k; dr = mid2 + k; } if(x == 'b' && y == 'b') st = mid1; if(x == 'f' && y == 'f') dr = mid1 + k; if(x == 'b' && y == 'f') { st = mid1; dr = mid2 + k; } if(x == 'b' && y == 's') { st = mid1; dr = (dr + mid2) / 2 + k; } } int main() { k = get_speed(); int st = 0; int dr = 12121; int qu = 13; minlen = 0; while(qu) { int mid1 = st + (dr - st) / 3; int mid2 = dr - (dr - st) / 3; ask_snake(mid1, mid2, &x, &y); --qu; if(x == 's' && y == 's') { while(qu && x == 's' && y == 's') { minlen = max(minlen, mid2 - mid1); mid1 = (st + mid1) / 2; mid2 = (dr + mid2) / 2 + k; ask_snake(mid1, mid2, &x, &y); --qu; } casework(st, dr, mid1, mid2); } else casework(st, dr, mid1, mid2); } if(minlen == 0) tell_length(minlen); else tell_length(dr - st); }
#Verdict Execution timeMemoryGrader output
Fetching results...