제출 #1193085

#제출 시각아이디문제언어결과실행 시간메모리
1193085nuutsnoyntonRice Hub (IOI11_ricehub)C++20
68 / 100
1093 ms1348 KiB
#include<bits/stdc++.h> #include "ricehub.h" using ll = long long; using namespace std; ll pre_sum[100002]; ll range_sum(ll lo, ll hi) { if ( lo == 0) return pre_sum[hi]; return pre_sum[hi] - pre_sum[lo - 1]; } int besthub(int R, int L, int X[], long long B){ ll lo, hi, lef, rig, mid, lo1, hi1, lo2, hi2, sum; for (int i = 0; i < R; i ++) { if ( i == 0) pre_sum[i] = X[i]; else pre_sum[i] = pre_sum[i - 1] + X[i]; } ll s = 0; for (int i = 0; i < R; i ++) { lef = i - 1; rig = i + 1; sum = 0; while ( 1 ) { if ( lef < 0 && rig >= R) break; if ( lef < 0) { if ( ll(sum + X[rig] - X[i]) > B) break; sum = sum + X[rig] - X[i]; rig ++; continue; } if ( rig >= R) { if ( ll(sum - X[lef] + X[i]) > B) break; sum = sum - X[lef] + X[i]; lef --; continue; } if (X[i] - X[lef] <= X[rig] - X[i]) { if ( sum - X[lef] + X[i] > B) break; sum = sum - X[lef] + X[i]; lef --; continue; } else { if ( sum + X[rig] - X[i] > B) break; sum = sum + X[rig] - X[i]; rig ++; continue; } } s = max(s, rig - lef - 1); } return s; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...