Submission #1291244

#TimeUsernameProblemLanguageResultExecution timeMemory
1291244blackscreen1Rice Hub (IOI11_ricehub)C++20
0 / 100
1 ms568 KiB
#include "ricehub.h"
#include <bits//stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
typedef tree<long long, null_type, less<long long>, rb_tree_tag,
             tree_order_statistics_node_update>
    ordered_set;
typedef tree<long long, null_type, less_equal<long long>, rb_tree_tag,
             tree_order_statistics_node_update>
    ordered_multiset;
#define ll long long
#define ld long double
#define iloop(m, h) for (auto i = m; i != h; i += (m < h ? 1 : -1))
#define jloop(m, h) for (auto j = m; j != h; j += (m < h ? 1 : -1))
#define kloop(m, h) for (auto k = m; k != h; k += (m < h ? 1 : -1))
#define lloop(m, h) for (auto l = m; l != h; l += (m < h ? 1 : -1))
#define iloop_(m, h, g) for (auto i = m; i < h; i += g)
#define jloop_(m, h, g) for (auto j = m; j < h; j += g)
#define kloop_(m, h, g) for (auto k = m; k < h; k += g)
#define lloop_(m, h, g) for (auto l = m; l < h; l += g)
#define getchar_unlocked _getchar_nolock // comment before submission
#define pll pair<ll, ll>
#define plll pair<ll, pll>
#define pllll pair<pll, pll>
#define vll vector<ll>
#define qll queue<ll>
#define dll deque<ll>
#define pqll priority_queue<ll>
#define gll greater<ll>
#define INF 1000000000000000
#define MOD1 1000000007
#define MOD2 998244353
#define MOD3 1000000009
mt19937 rng(chrono::system_clock::now().time_since_epoch().count());
deque<ll> lh, rh;
ll ls, rs;
void balance() {
	while (rh.size() > lh.size()) {
		lh.push_back(rh.front());
		ls += rh.front();
		rs -= rh.front();
		rh.pop_front();
	}
}
ll cost() {
	return (lh.front()*((ll)lh.size()- (ll)rh.size()) - ls + rs);
}
int besthub(int R, int L, int X[], long long B) {
	ll n = R, ans = 0;
	lh.clear(), rh.clear();
	ls = rs = 0;
	iloop(0, n) {
		rh.push_back(X[i]);
		rs += X[i];
		balance();
		while (cost() > B) {
			ls -= lh.front();
			lh.pop_front();
			balance();
		}
		ans = max(ans, (ll)lh.size() + (ll)rh.size());
	}
	return 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...