Submission #1153151

#TimeUsernameProblemLanguageResultExecution timeMemory
1153151KK_1729Snowball (JOI21_ho_t2)C++17
33 / 100
2594 ms10252 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define FOR(i,a,b) for (int i = (a); i < (b); ++i)
#define pb push_back
#define all(a) a.begin(), a.end()
#define endl "\n"

void printVector(vector<int> a){
	for (auto x: a) cout << x << " ";
	cout << endl;
}

void solve(){
	int n, q; cin >> n >> q;
	vector<int> o(n+1);
	FOR(i,1,n+1) cin >> o[i];

	vector<int> a(q+1), b(q+1);
	int curr = 0;
	vector<int> u(q+1);
	FOR(i,1,q+1) cin >> u[i];
	FOR(i,1,q+1){
		curr += u[i];
		a[i] = max(a[i-1], curr);
		b[i] = max(b[i-1], -curr);
	}

	vector<int> c(q+2);
	FOR(i,1,q+1) c[i] = a[i]+b[i];
	c[q+1] = 1e15;
	vector<int> ans(n+1);
	// printVector(a);
	// printVector(b);
	FOR(i,1,n){
		int d = o[i+1]-o[i]-1;
		int j = 0;
		while (c[j] <= d) j++;
		ans[i] += a[j-1];
		ans[i+1] += b[j-1];
		if (j == q+1) continue;
		if (b[j] != b[j-1]){
			ans[i+1] += d-a[j-1]-b[j-1]+1;
		}else{
			ans[i] += d-a[j-1]-b[j-1]+1;
		}

	}	
	ans[1] += b[q];
	ans[n] += a[q];
	FOR(i,1,n+1) cout << ans[i] << endl;

}

int32_t main(){
	ios::sync_with_stdio(false);cin.tie(nullptr);
	int t = 1; // cin >> t;
	while (t--) solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...