不知道思路对不对,看了一圈题解没有……
查看原帖
不知道思路对不对,看了一圈题解没有……
578860
sordio楼主2024/8/2 19:18

马蜂良好

#include<bits/stdc++.h>
using namespace std;

const int N=2e5+5;
int a[N],b[N],c[N],s[N];

void clean(int x){
	for(int i=0;i<=x;i++){
		a[i]=b[i]=c[i]=s[i]=0;
	}
	return;
}

void solve(){
	int n,k,cnt=0;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&c[i]);
	}
	scanf("%d",&k);
	for(int i=1;i<=n;i++){
		while(b[cnt]>=c[i]) cnt--;
		b[++cnt]=c[i];s[cnt]=i;
	}
	int t=1;
	while(t<=cnt&&k>=b[t]-b[t-1]){
		for(int i=s[t-1]+1;i<=s[t];i++){
			a[i]+=k/(b[t]-b[t-1]);	
		}
		k=k%(b[t]-b[t-1]);
		t++;
	}
	for(int i=1;i<=n;i++){
		printf("%d ",a[i]);
	}
	printf("\n");
	clean(n);
	return;
}


int main(){
	int T;
	scanf("%d",&T);
	while(T--){
		solve();
	}
	return 0;
}
2024/8/2 19:18
加载中...