2019 ICPC 沈阳网络赛 Honk's pool

原题地址
题意:一天可以进行三个操作。
第一个是从水池中水最多的水池中抽出1KG。
第二个是把抽出来的水倒进水池中水最少的水池中。
第三个是什么都不干
分析:直接按照题意往下写就行(不得不说,STL特别重要,我用for+sort就是超时,用这个mutliset时间用的还很少!)
代码:

#include
#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;
}

你可能感兴趣的:(不会的)