做了一道cf水题

被一道cf水题卡了半天的时间,主要原因时自己不熟悉c++stl库的函数,本来一个可以用库解决的问题,我用c语言模拟了那个函数半天,结果还超时了。

题意大概就是,给定n个数,查询k次,每次查询过后,输出最小的一个不为零的数x,同时这给定的n个数都要减去x。其实当一个数被输出后就可被丢弃了,因为它变成了0,成为了无用信息。

同时要求从小到大找,所以这道题可以直接用set函数解决,每输出一个数,就从set列表里删除。

下面插入代码

#include <bits/stdc++.h>
using namespace std;
int n,k,t=0,x;
set<int> s;
int main()
{
    cin>>n>>k;
    for(int i=0;i<n;i++)
    {
    cin>>x;
    s.insert(x);
    }
    while(k--)
    {
        if(s.empty())
        cout<<0<<endl;
        else
        {
            x=*s.begin();
            cout<<x-t<<endl;
            t=x;
            s.erase(x);
        }
    }
    return 0;
} 
原文地址:https://www.cnblogs.com/rainyskywx/p/10077747.html