Submission #200385

#TimeUsernameProblemLanguageResultExecution timeMemory
200385wilwxkSafety (NOI18_safety)C++14
100 / 100
89 ms5524 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int n, x;
priority_queue<ll> l;
priority_queue<ll, vector<ll>, greater<ll> > r;
ll llz, rlz;
ll ans;

int main() {
	scanf("%d %d", &n, &x);
	for(int i = 1; i <= n; i++) {
		ll val; scanf("%lld", &val);

		if(i == 1) {
			l.push(val);
			r.push(val);
			continue;
		}

		llz -= x;
		rlz += x;

		if(val <= l.top()+llz) {
			l.push(val-llz);
			l.push(val-llz);
			r.push(l.top()+llz-rlz);
			l.pop();
			ans += abs(r.top()+rlz-val);
		}
		else {
			r.push(val-rlz);
			r.push(val-rlz);
			l.push(r.top()+rlz-llz);
			r.pop();
			ans += abs(l.top()+llz-val);
		}
		// printf("%d >> %d %d >> %d %d >> %lld\n", i, l.top(), r.top(), llz, rlz, ans);
	}

	printf("%lld\n", ans);
}

Compilation message (stderr)

safety.cpp: In function 'int main()':
safety.cpp:12:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d", &n, &x);
  ~~~~~^~~~~~~~~~~~~~~~~
safety.cpp:14:16: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   ll val; scanf("%lld", &val);
           ~~~~~^~~~~~~~~~~~~~
#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...