Submission #473451

#TimeUsernameProblemLanguageResultExecution timeMemory
473451hhhhauraRice Hub (IOI11_ricehub)C++14
17 / 100
231 ms2256 KiB
#define wiwihorz #include "ricehub.h" #include <bits/stdc++.h> #pragma GCC optimize("Ofast") #pragma loop-opt(on) #define rep(i, a, b) for(int i = a; i <= b; i ++) #define rrep(i, a, b) for(int i = b; i >= a; i --) #define all(x) x.begin(), x.end() #define ceil(a, b) ((a + b - 1) / (b)) #define INF 1000000000000000000 #define MOD 1000000007 #define eps (1e-9) using namespace std; #define ll long long int #define lld long double #define pii pair<ll, ll> #define random mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count()) #ifdef wiwihorz #define print(a...) cerr << "Line " << __LINE__ << ": ", kout("[" + string(#a) + "] = ", a) void vprint(auto L, auto R) {while(L < R) cerr << *L << " \n"[next(L) == R], ++L;} void kout() { cerr << endl; } template<class T1, class ... T2> void kout(T1 a, T2 ... e) { cerr << a << " ", kout(e...); } #else #define print(...) 0 #define vprint(...) 0 #endif ll n, val; vector<ll> a, pre; pii get_val(int x, int len) { ll L, R, ans = 0, cnt = 0; L = 0, R = x; while(R - L > 1) { int mid = (L + R) / 2; if(a[x] - a[mid] <= len) R = mid; else L = mid; } cnt += x - R + 1; ans += a[x] * (x - R + 1) - (pre[x] - pre[R - 1]); L = x, R = n + 1; while(R - L > 1) { int mid = (L + R) / 2; if(a[mid] - a[x] <= len) L = mid; else R = mid; } cnt += L - x; ans += pre[L] - pre[x] - (L - x) * a[x]; return {cnt, ans}; } int besthub(int R, int L, int X[], ll B) { n = R, val = B; a.assign(R + 1, 0); pre.assign(R + 1, 0); rep(i, 1, R) { a[i] = X[i - 1]; pre[i] = pre[i - 1] + X[i - 1]; } ll ans = 0; rep(i, 1, R) if(a[i] != a[i - 1]) { ll l = 0, r = L; ll cost, cnt, val, val2, cc; while(r - l > 1) { int mid = (l + r) / 2; if(tie(cnt, cost) = get_val(i, mid), cost <= B) val = cnt, l = mid, cc = cost; else r = mid, val2 = cnt; } ans = max(ans, val + min((B - cc) / r, val2 - val)); } return ans; }

Compilation message (stderr)

ricehub.cpp:5: warning: ignoring '#pragma loop ' [-Wunknown-pragmas]
    5 | #pragma loop-opt(on)
      | 
ricehub.cpp:25:13: warning: use of 'auto' in parameter declaration only available with '-fconcepts-ts'
   25 | void vprint(auto L, auto R) {while(L < R) cerr << *L << " \n"[next(L) == R], ++L;}
      |             ^~~~
ricehub.cpp:25:21: warning: use of 'auto' in parameter declaration only available with '-fconcepts-ts'
   25 | void vprint(auto L, auto R) {while(L < R) cerr << *L << " \n"[next(L) == R], ++L;}
      |                     ^~~~
ricehub.cpp: In function 'int besthub(int, int, int*, long long int)':
ricehub.cpp:72:31: warning: 'cc' may be used uninitialized in this function [-Wmaybe-uninitialized]
   72 |   ans = max(ans, val + min((B - cc) / r, val2 - val));
      |                            ~~~^~~~~
ricehub.cpp:72:47: warning: 'val2' may be used uninitialized in this function [-Wmaybe-uninitialized]
   72 |   ans = max(ans, val + min((B - cc) / r, val2 - val));
      |                                          ~~~~~^~~~~
ricehub.cpp:72:22: warning: 'val' may be used uninitialized in this function [-Wmaybe-uninitialized]
   72 |   ans = max(ans, val + min((B - cc) / r, val2 - val));
      |                  ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...