Submission #787485

#TimeUsernameProblemLanguageResultExecution timeMemory
787485acatmeowmeowRice Hub (IOI11_ricehub)C++11
100 / 100
15 ms2496 KiB
#include "ricehub.h" #include <bits/stdc++.h> using namespace std; const int N = 1e5; long long prefix[N + 5]; int besthub(int R, int L, int X[], long long B) { for (int i = 1; i <= R; i++) prefix[i] = prefix[i - 1] + (long long)X[i - 1]; int l = 1, r = R, ans = 0; while(l <= r) { int m = (l + r)/2, valid = 0; for (int i = m; i <= R; i++) { int j = i - m + 1, median = (i + j)/2; long long f = prefix[i] - prefix[median] - (long long)(i - median)*X[median - 1]; long long se = (long long)(median - j + 1)*X[median - 1] - (prefix[median] - prefix[j - 1]); valid |= f + se <= B; } if (valid) ans = m, l = m + 1; else r = m - 1; } return ans; } /*#include "ricehub.h" #include <stdio.h> #include <stdlib.h> #define MAX_R 1000000 static int R, L; static long long B; static int X[MAX_R]; static int solution; inline void my_assert(int e) {if (!e) abort();} static void read_input() { int i; //my_assert(3==scanf("%d %d %lld",&R,&L,&B)); cin >> R >> L >> B; for(i=0; i<R; i++) // my_assert(1==scanf("%d",&X[i])); cin >> X[i]; //my_assert(1==scanf("%d",&solution)); } int main() { int ans; read_input(); ans = besthub(R,L,X,B); if(ans==solution) printf("Correct.\n"); else printf("Incorrect. Returned %d instead of %d.\n",ans,solution); return 0; }*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...