Submission #207536

#TimeUsernameProblemLanguageResultExecution timeMemory
207536robsRice Hub (IOI11_ricehub)C++17
0 / 100
7 ms504 KiB
#include "ricehub.h" #include <bits/stdc++.h> #define debug(args...) //fprintf(stderr, args) typedef long long int lli; using namespace std; const int maxn = 2e5; int s[maxn],cs[maxn],I,J,SUM; int besthub(int R, int L, int X[], long long int B) { s[0] = X[0]; for(int x = 1; x < R; x++) s[x] = s[x-1] + X[x]; cs[R-1] = 0; // debug("R-1 = %d\n",R-1); for(int x = R-2; x >= 0; x--) cs[x] = cs[x+1] + X[R-1] - X[x]; // for(int x = 0; x < R; x++) // debug("cs[%d] = %d, dist = %d\n",x,cs[x],X[R-1]-X[x]); debug("\n\n"); int i = 0; int j = 0; lli resp = 0; while(j < R) { int med = (i + j) / 2; lli sumEsq = (cs[i] - cs[med]) - ((med - i)*(X[R-1] - X[med])); debug("%d - %d:\nsumEsq = %d = (%d-%d) - ((%d-%d)*(%d-%d))\n\n",i,j,sumEsq,cs[i],cs[med],med,i,X[R-1],X[med]); lli sumDir = (s[j] - s[med]) - ((j - med)*(X[med] - X[0])); lli sum = sumEsq + sumDir; lli r = j - i + 1; debug("%d - %d(%d) %d %d -%d-\n",i,j,sum,sumEsq,sumDir,med); if(sum <= B) { resp = max(resp, r); j++; } else if(i == j) { j++; } else i++; } return resp; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...