2019 ICPC 沈阳网络赛 Honk's pool
原题地址
题意:一天可以进行三个操作。
第一个是从水池中水最多的水池中抽出1KG。
第二个是把抽出来的水倒进水池中水最少的水池中。
第三个是什么都不干
分析:直接按照题意往下写就行(不得不说,STL特别重要,我用for+sort就是超时,用这个mutliset时间用的还很少!)
代码:
#include<bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#define rson mid+1,r,p<<1|1
using namespace std;
const int inf=1e9;
const int mod=1e9+7;
const int maxn=1e5+10;
int n,k,a[maxn];
multiset<int>q;
int main()
{
//ios:: sync_with_stdio(false);
//freopen("in","r", stdin);
while(~scanf("%d%d",&n,&k))
{
q.clear();
for(int i=1; i<=n; i++)
{
scanf("%d",&a[i]);
q.insert(a[i]);
}
while(k--)
{
auto it=q. end();
--it;
int x=*it;
q.erase(it);
q.insert(x-1);
it=q.begin();
x=*it;
q.erase(it);
q.insert(x+1);
}
auto it=q.end();
--it;
int x=*it;
it=q.begin();
int y=*it;
printf("%d\n",x-y);
}
return 0;
}