T86 求助!!!
查看原帖
T86 求助!!!
866154
fcy20180201楼主2023/12/25 22:48
#include<cstdio>
#include<algorithm>
using namespace std;
using ll=long long;
int n,m,lst[200005],nxt[200005];
ll h[200005],ans[200005],add[200005];

ll read(){
	char c;
	while((c=getchar())<'0' || c>'9');
	ll res=(c^48);
	while((c=getchar())>='0' && c<='9')res=(res<<3ll)+(res<<1ll)+(c^48);
	return res;
}

int main(){
	n=read(),m=read();
	nxt[0]=1,lst[n+1]=n;
	for(int i=1;i<=n;i++)h[i]=read(),lst[i]=i-1,nxt[i]=i+1;
	while(m--){
		ll x=read(),l=0;
		for(int i=nxt[0];i<=n;i=nxt[i]){
			if(h[i]<=h[lst[i]])nxt[lst[i]]=nxt[i],lst[nxt[i]]=lst[i];
			add[i]=min(h[i],x)-l;l=min(max(l,h[i]),x);
			if(l==x)break;
		}
		for(int i=nxt[0];i<=n;i=nxt[i])h[i]+=add[i],add[i]=0;
	}
	for(int i=1;i<=n;i++)printf("%lld\n",h[i]);
	return 0;
}
2023/12/25 22:48
加载中...