45pts求助
查看原帖
45pts求助
1023443
Jaykis楼主2024/11/11 21:58
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int n,k;
int p[N];

struct Node{
	int ans,id;
}a[N];

bool cmp(Node a,Node b){
	return a.ans>b.ans;
}

int main(){
	scanf("%d %d",&n,&k);
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i].ans),a[i].id=i;
	sort(a+1,a+1+n,cmp);
	for(int i=2;i<=n;i++){
		if(a[i].ans==a[i-1].ans) p[a[i].id]=p[a[i-1].id];
		else{
			int l=a[i-1].ans-a[i].ans-p[a[i-1].id]*k-k;
			if(l>0) p[a[i].id]=0;
			else p[a[i].id]=ceil(1.0*(-l+1)/k);
		}
	}
	for(int i=1;i<=n;i++)
		printf("%d ",p[i]);
	return 0;
}

WA

2024/11/11 21:58
加载中...