Submission #784777

#TimeUsernameProblemLanguageResultExecution timeMemory
784777aZvezdaMeetings (IOI18_meetings)C++14
4 / 100
5598 ms2172 KiB
#include "meetings.h"

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#ifndef local
#define cerr if(false)cerr
#endif

const int MAX_N = 1e6 + 10;
int n, q, arr[MAX_N];

ll solve(ll l, ll r) {
	if(r < l) { return 0; }
	if(l == r) { return arr[l]; }
	int mx = max_element(arr + l, arr + r + 1) - arr;
	ll ret = arr[mx] * (r - l + 1);
	ll lft = solve(l, mx - 1) + (r - mx + 1) * arr[mx];
	ll rght = solve(mx + 1, r) + (mx - l + 1) * arr[mx];
	return min({ret, lft, rght});
}

vector<long long> minimum_costs(vector<int> h, vector<int> l, vector<int> r) {
	vector<ll> ret = {};
	int q = l.size();
	int n = h.size();
	for(int i = 0; i < n; i ++) {
		arr[i] = h[i];
	}
	for(int i = 0; i < q; i ++) {
		ret.push_back(solve(l[i], r[i]));
	}
	return ret;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...