列表

详情


NC219474. 集合操作

描述

定义一个可重集合 ,一次操作为将 中最大值减去

想知道,如果给你 ,以及操作次数 ,你能求出最后的集合吗?

输入描述

第一行包含三个整数  ,表示  ,操作次数与每次减去的值。

第二行包含  个整数,表示集合内的元素。

输出描述

一行  个整数表示经过  次操作的集合  中的元素。

注意:你只需要从小到大输出,并保证  。

示例1

输入:

3 2 5
10 14 16

输出:

9 10 11

说明:

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++ 解法, 执行用时: 423ms, 内存消耗: 33732K, 提交时间: 2021-11-09 23:44:06

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
priority_queue<ll> q;
ll a[1000006],x;
int n,k,p,cnt;
int main()
{
	scanf("%d%d%d",&n,&k,&p);
	for (int i=1;i<=n;i++)
	{
		scanf("%lld",&x);
		q.push(x);
	}
	for (int i=1;i<=k;i++)
	{
		q.push(q.top()-p);
		q.pop();
	}
	for (int i=1;!q.empty();i++)
	{
		a[i]=q.top();
		q.pop();
	}
	for (int i=n;i>0;i--) printf("%lld ",a[i]);
}

上一题