1. 程式人生 > >Codeforces Round #525 (Div. 2)B. Ehab and subtraction

Codeforces Round #525 (Div. 2)B. Ehab and subtraction

B. Ehab and subtraction

題目連結https://codeforc.es/contest/1088/problem/B

題意:

給出n個數,給出k次操作,然後每次操作把所有數減去最小值,輸出這個最小值,k用不完用0來補。

題解:

考慮到重複的數會被一起減去,所以我用了個set來存放這n個數,然後用個累加器記錄下減去了多少最小值,把數取出來時減去這個累加器就好了,最後用0來補。

 

程式碼如下:

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+5;
int n,k;
int a[N]; set <int > S; int main(){ cin>>n>>k; for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+n+1); for(int i=1;i<=n;i++) S.insert(a[i]); int cnt=0; for(auto it=S.begin();it!=S.end();it++){ cout<<*it-cnt<<endl; cnt
+=*it-cnt; k--; if(k<=0) break; } while(k--) cout<<0<<endl; return 0; }