天天看点

优先队列

从小到大 priority_queue<int,vector<int>,greater<int> >q;

从大到小 priority_queue<int,vector<int>,less<int> >q;

//qscqesze

#include <cstdio>

#include <cmath>

#include <cstring>

#include <ctime>

#include <iostream>

#include <algorithm>

#include <set>

#include <vector>

#include <sstream>

#include <queue>

#include <typeinfo>

#include <fstream>

#include <map>

#include <stack>

typedef long long ll;

using namespace std;

//freopen("d.in","r",stdin);

//freopen("d.out","w",stdout);

#define sspeed ios_base::sync_with_stdio(0);cin.tie(0)

#define maxn 200001

#define mod 10007

#define eps 1e-9

int num;

char ch[20];

//const int inf=0x7fffffff;   //нчоч╢С

const int inf=0x3f3f3f3f;

/*

inline void p(int x)

{

    num=0;if(!x){putchar('0');puts("");return;}

    while(x>0)ch[++num]=x%10,x/=10;

    while(num)putchar(ch[num--]+48);

    puts("");

}

*/

inline ll read()

    int x=0,f=1;char ch=getchar();

    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}

    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}

    return x*f;

//**************************************************************************************

int a[maxn];

priority_queue<int,vector<int>,greater<int> >q;

int main()

    int n=read(),l=read(),k=read();

    for(int i=0;i<n;i++)

    {

        int tmp=read();

        q.push(tmp);

    }

    int ans=0;

    while(!q.empty())

        int tmp=q.top();

        if(tmp>l)

            break;

        ans++;

        q.pop();

        l+=k;

    cout<<ans<<endl;

IT
上一篇: 优先队列
下一篇: 优先队列

继续阅读