Submission #43145

#TimeUsernameProblemLanguageResultExecution timeMemory
43145RayaBurong25_1The Big Prize (IOI17_prize)C++14
94.30 / 100
18 ms4364 KiB
#include "prize.h" #include <stdio.h> #include <vector> #include <algorithm> int L[200005], R[200005]; int V[200005]; int min(int a, int b) { return (a < b)?a:b; } int max(int a, int b) { return (a > b)?a:b; } int find_best(int n) { int i, j; for (i = 0; i < n; i++) L[i] = -1; int mn, md, mx; //first sig std::vector<int> r; r = ask(0); L[0] = r[0]; R[0] = r[1]; if (R[0] == 0) return 0; r = ask(n - 1); L[n - 1] = r[0]; R[n - 1] = r[1]; if (L[n - 1] == 0) return n - 1; int sigl = 0, sigr = n - 1; while (sigl < sigr) { for (i = 0; i < 2; i++) { for (j = sigr; j > sigl; j--) if (L[j] != -1 && L[j] != L[sigr] && R[j] != R[sigr]) break; mn = j; mx = sigr; while (mx != mn) { if (mx - mn == 1) { sigr = mn; break; } md = (mn + mx)/2; if (L[md] == -1) { r = ask(md); L[md] = r[0]; R[md] = r[1]; } if (L[md] == 0 && R[md] == 0) return md; if (L[md] == L[sigr] && R[md] == R[sigr]) mx = md; else mn = md; } if (L[sigr] == -1) { r = ask(sigr); L[sigr] = r[0]; R[sigr] = r[1]; } if (L[sigr] == 0 && R[sigr] == 0) return sigr; } // printf("sigl %d sigr %d\n", sigl, sigr); for (i = 0; i < 2; i++) { for (j = sigl; j < sigr; j++) if (L[j] != -1 && L[j] != L[sigr] && R[j] != R[sigr]) break; mn = sigl; mx = j; while (mx != mn) { if (mx - mn == 1) { sigl = mx; break; } md = (mn + mx)/2; if (L[md] == -1) { r = ask(md); L[md] = r[0]; R[md] = r[1]; } if (L[md] == 0 && R[md] == 0) return md; if (L[md] == L[sigl] && R[md] == R[sigl]) mn = md; else mx = md; } if (L[sigl] == -1) { r = ask(sigl); L[sigl] = r[0]; R[sigl] = r[1]; } if (L[sigl] == 0 && R[sigl] == 0) return sigl; } } if (sigl == sigr) return sigl; }

Compilation message (stderr)

prize.cpp: In function 'int find_best(int)':
prize.cpp:113:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...