题解:B4056 [语言月赛 202411] 卡牌

· · 题解

考察双重循环。

用一个循环枚举每一个卡包,每个卡包用一个变量记录能买下的最贵的卡牌,使用第二维循环读入卡牌的面额,按题意模拟即可,代码如下:

#include<bits/stdc++.h>
using namespace std;
int n,x,c[6];
int main(){
    cin>>x>>n;
    for(int i=1;i<=n;i++){
        int Mx=0;
        for(int j=1;j<=5;j++){
            int k;
            cin>>k;
            if(k<=x)Mx=max(Mx,k);
        }
        c[Mx]++,x-=Mx;
    }
    for(int i=1;i<=5;i++)cout<<c[i]<<" ";
    cout<<'\n';
    cout<<x;
    return 0;
}