ZOJ 3230 Solving the Problems

来源:互联网 发布:淘宝的我是卖家在哪里 编辑:程序博客网 时间:2024/05/18 00:24

贪心思想,优先队列处理,用set应该也可以。

#include "cstring"#include "iostream"#include "algorithm"#include "cstdio"#include "queue"#include "set"using namespace std;typedef long long LL;const int M=100050;const int maxn=2147483648;const int INF = 0x3f3f3f3f;int n,m,p;//set<int>q;struct node{    int a,b;    bool operator <(const node &c)const    {        return b<c.b;    }} s[M];priority_queue<node> q;bool cmp(node x,node y){    if(x.a==y.a)        return y.b>x.b;    else        return y.a>x.a;}int main(){    while(cin>>n>>m>>p)    {        for(int i=0; i<n; ++i)            cin>>s[i].a>>s[i].b;        sort(s,s+n,cmp);        int ans=0;        while(!q.empty())            q.pop();        for(int i=0; i<m; i++)        {            while(s[ans].a<=p&&ans<n)            {                q.push(s[ans]);                ans++;            }            if(!q.empty())            {                p+=q.top().b;                q.pop();            }        }        cout<<p<<endl;    }    return 0;}

0 0