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]); }