Submission #835125

#TimeUsernameProblemLanguageResultExecution timeMemory
835125tolbi모임들 (IOI18_meetings)C++17
19 / 100
5580 ms5656 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define tol(bi) (1LL<<((ll)(bi)))
#include "meetings.h"
vector<long long> minimum_costs(vector<int> arr, vector<int> L, vector<int> R) {
	ll q = L.size();
	ll n = arr.size();
	vector<ll> ansarr(q,0);
	for (ll qu = 0; qu < q; ++qu) {
		ll l = L[qu];
		ll r = R[qu];
		vector<ll> leftdp(r-l+1);
		vector<ll> rightdp(r-l+1);
		vector<ll> stak;
		for (ll i = l; i <= r; i++){
			while (stak.size() && arr[stak.back()]<=arr[i]){
				stak.pop_back();
			};
			if (stak.size()==0){
				leftdp[i-l]=(i-l+1)*arr[i];
			}
			else {
				leftdp[i-l]=leftdp[stak.back()-l]+arr[i]*(i-stak.back());
			}
			stak.push_back(i);
		}
		stak.clear();
		for (ll i = r; i >= l; i--){
			while (stak.size() && arr[stak.back()]<=arr[i]){
				stak.pop_back();
			}
			if (stak.size()==0){
				rightdp[i-l]=(r-i+1)*arr[i];
			}
			else {
				rightdp[i-l]=rightdp[stak.back()-l]+arr[i]*(stak.back()-i);
			}
			stak.push_back(i);
		}
		ll ans = LONG_LONG_MAX;
		for (ll i = l; i <= r; i++){
			ans=min(ans,leftdp[i-l]+rightdp[i-l]-arr[i]);
		}
		ansarr[qu]=ans;
	}
	return ansarr;
}

Compilation message (stderr)

meetings.cpp: In function 'std::vector<long long int> minimum_costs(std::vector<int>, std::vector<int>, std::vector<int>)':
meetings.cpp:8:5: warning: unused variable 'n' [-Wunused-variable]
    8 |  ll n = arr.size();
      |     ^
#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...