Submission #261601

#TimeUsernameProblemLanguageResultExecution timeMemory
261601c4ts0upRice Hub (IOI11_ricehub)C++17
68 / 100
1040 ms1212 KiB
#include "ricehub.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

ll n;
vector <ll> arr;

ll RO(ll budget, ll idx) {
	vector <int> pq;
	for (ll x : arr) pq.push_back(abs(x-arr[idx]));
	ll paks = 1, suma = 0, lb = idx-1, ub = idx+1;
	
	while (lb >= 0 || ub < n) {
		if (lb >= 0 && ub < n && pq[lb] <= pq[ub]) {
			if (suma + pq[lb] <= budget) suma += pq[lb], lb--, paks++;
			else break;
		}
		else if (lb >= 0 && ub < n && pq[lb] > pq[ub]) {
			if (suma + pq[ub] <= budget) suma += pq[ub], ub++, paks++;
			else break;
		}
		else if (lb >= 0) {
			if (suma + pq[lb] <= budget) suma += pq[lb], lb--, paks++;
			else break;
		}
		else if (ub < n) {
			if (suma + pq[ub] <= budget) suma += pq[ub], ub++, paks++;
			else break;
		}
		else {}
	}
	
	return paks;
}

int besthub(int R, int L, int X[], ll B) {
	for (ll i=0; i<R; i++) arr.push_back((ll)X[i]);
	
	n = R;
	ll maxi = 0;
	for (ll i=0; i<R; i++) {
		maxi = max(maxi, RO(B, i));
	}
	return maxi;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...