top1编程
← 返回题目
题解

生日

1 条题解

  • 0
    @ 2026-7-28 22:44:58
    #include <bits/stdc++.h>
    using namespace std;
    struct sr {
        int sl, p;
    } b[1010];
    bool cmp(sr a, sr b) {
    	//先按优先等级排序,再按蛋糕数量小到大 
       if(a.p>b.p||a.p==b.p&&a.sl<b.sl){
            return 1;
       }else{
            return 0;
       }
    }
    int main() {
        int n, m;
        cin >> n >> m;
        for (int i = 1; i <= n; i++) {
            cin >> b[i].sl >> b[i].p;
        }
        sort(b+1, b + n+1, cmp);
        int s = 0;
        for (int i = 1; i <=n; i++) {
        	//能够满足这个人的蛋糕要求 
            if (m >= b[i].sl) {//剩余蛋糕还够
                s += 1;
                m -= b[i].sl;
            }
        }
        cout <<s;
        return 0;
    }
    
    • 1