Submission #1273345

#TimeUsernameProblemLanguageResultExecution timeMemory
1273345lamlamlam쌀 창고 (IOI11_ricehub)C++20
0 / 100
0 ms336 KiB
#include <bits/stdc++.h> using namespace std; #define MAX_R 1000000 #include "ricehub.h" #define ll long long struct Data { deque<int> dq; int sum = 0, lower_sum = 0; void push_back(int x){ dq.push_back(x); int sz = dq.size(), mid = sz/2; if(sz%2==0) lower_sum += dq[mid]; sum += x; } void pop_front(){ auto tmp = dq.front(); dq.pop_front(); sum -= tmp; lower_sum -= tmp; int sz = dq.size(), mid = sz/2; if(sz%2) lower_sum += dq[mid]; } ll get_weight(){ int sz = dq.size(), mid = sz/2; ll sus = dq[mid]*(mid+1) - lower_sum + (sum - lower_sum) - dq[mid]*(sz-mid-1); return sus; } int get_mid(){ int sz = dq.size(), mid = sz/2; return dq[mid]; } }; int besthub(int R, int L, int a[], long long B) { Data dq; int l = 0, r = 0, mid, sz, ans = 0, best_ans = 0; while(r<R){ dq.push_back(a[r]); while(dq.get_weight()>B) dq.pop_front(); // cerr << r << ' ' << r-dq.dq.size()+1 << ' ' << dq.get_weight() << ' ' << dq.get_mid() << ' ' << dq.dq.size() << endl; int sz = dq.dq.size(); if(sz>best_ans){ best_ans = sz; ans = dq.get_mid(); } r++; } return best_ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...