제출 #1199569

#제출 시각아이디문제언어결과실행 시간메모리
1199569sofapudenSafety (NOI18_safety)C++20
100 / 100
131 ms19168 KiB
#include<bits/stdc++.h>

using namespace std;

typedef long long ll;

int main () {
	ios_base::sync_with_stdio(0); cin.tie(0);
	ll n, h; cin >> n >> h;
	multiset<ll> L, R;
	priority_queue<ll> mer;
	ll dl = 0, dr = 0;
	ll ans = 0;
	for(int i = 0; i < n; ++i){
		int x; cin >> x;
		ans -= x;
		L.insert(x - dl);
		R.insert(x - dr);
		while(*R.begin() + dr < *L.rbegin() + dl){
			R.insert(*L.rbegin() + dl - dr);
			L.insert(*R.begin() + dr - dl);
			R.erase(R.begin());
			L.erase(prev(L.end()));
		}
		ans -= (i + 1) * h;
		dl -= h;
		dr += h;
	}
	for(auto x : R)ans += x + dr;
	cout << ans << '\n';
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...