제출 #1204784

#제출 시각아이디문제언어결과실행 시간메모리
1204784namhhSnowball (JOI21_ho_t2)C++20
0 / 100
1 ms580 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int,int>
#define fi first
#define se second
const int N = 1e6+1;
int n,q,a[N],b[N],ans[N];
vector<int>megu,aquaa,aqua;
vector<pii>cc;
vector<int>dm;
signed main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cin >> n >> q;
	for(int i = 1; i <= n; i++) cin >> a[i];
	while(q--){
		int x;
		cin >> x;
		if(x == 0) continue;
		if(!megu.size()) megu.push_back(x);
		else megu.push_back(megu.back()+x);
	}
	int curd = -1;
	int curam = -1;
	for(auto it: megu){
		if(it > 0){
			if(it > curd){
				aquaa.push_back(it);
				curd = it;
			}
		}
		else{
			if(abs(it) > curam){
				aquaa.push_back(it);
				curam = abs(it);
			}
		}
	}
	for(int i = 0; i < aquaa.size()-1; i++){
		if((aquaa[i] > 0 && aquaa[i+1] < 0) || (aquaa[i+1] > 0 && aquaa[i] < 0)) aqua.push_back(aquaa[i]);
	}
	if(!aquaa.empty()) aqua.push_back(aquaa.back());
	for(int i = 0; i < aqua.size()-1; i++) dm.push_back(abs(aqua[i])+abs(aqua[i+1]));
	//for(auto it: dm) cout << it << " ";
	//cout << "\n";
	for(int i = 1; i <= n-1; i++){
		int x = a[i+1]-a[i];
		int p = upper_bound(dm.begin(),dm.end(),x)-dm.begin()-1;
		if(p == dm.size()-1){
			if(aqua[p] > 0){
				ans[i] += aqua[p];
				ans[i+1] += abs(aqua[p+1]);
			}
			else{
				ans[i] += aqua[p+1];
				ans[i+1] += abs(aqua[p]);
			}
		}
		else if(p == -1){
			if(aqua[0] > 0){
				ans[i] += min(aqua[0],x);
				x -= aqua[0];
				if(x > 0) ans[i+1] += x;
			}
			else{
				ans[i+1] += min(abs(aqua[0]),x);
				x -= abs(aqua[0]);
				if(x > 0) ans[i] += x;
			}
		}
		else{
			if(aqua[p] > 0){
				ans[i] += aqua[p]+x-dm[p];
				ans[i+1] += abs(aqua[p+1]);
			}
			else{
				ans[i] += aqua[p+1];
				ans[i+1] += abs(aqua[p])+x-dm[p];
			}
		}
	}
	ans[1] += curam;
	ans[n] += curd;
	for(int i = 1; i <= n; i++) cout << ans[i] << "\n";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...