#include <iostream> using namespace std; struct music{ long long b,c,d; }a[100005]; int main(){ long long n,m,sum=0,sum1=0; cin>>n>>m; for(int i=1;i<=n;i++){ cin>>a[i].b>>a[i].c; a[i].d=a[i].b-a[i].c; sum+=a[i].b; sum1+=a[i].c; } if(sum1>m){ cout<<-1; return 0; } if(sum1==m){ cout<<0; return 0; } for(int i=1;i<n;i++){ for(int j=i+1;j<=n;j++){ if(a[i].d<a[j].d){ swap(a[i],a[j]); } } } long long i=0,cha=sum-m; while(cha>0&&i<n){ cha-=a[++i].d; } cout<<i; return 0; }
时间: 2024-01-25 22:02:01 浏览: 65
#include <iostream>
这是一段C++代码,实现了一个音乐播放器的功能。其中,结构体music表示一首歌曲,包含三个成员变量:b表示这首歌曲的播放时长,c表示这首歌曲的下载所需空间,d表示这首歌曲的空间与播放时长的差值。
代码的主要流程如下:
1. 读入n和m,表示有n首歌曲,总共可以下载m个单位的空间。
2. 读入每一首歌曲的播放时长和下载所需空间,并计算出总的播放时长sum和总的下载所需空间sum1。
3. 判断总的下载所需空间是否超过了可用空间m,如果是,则输出-1并结束程序。
4. 判断总的下载所需空间是否等于可用空间m,如果是,则输出0并结束程序。
5. 对所有歌曲按照d值进行从大到小的排序。
6. 从前往后遍历歌曲,累计它们的d值,直到累计值大于可用空间与总的播放时长之差cha,输出当前遍历的歌曲数量i并结束程序。
这段代码的作用是实现一个简单的音乐下载和播放功能,对于学习C++语言的人来说是一个很好的练习题目。
阅读全文