#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 17:02:01 浏览: 67
这是一段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++语言的人来说是一个很好的练习题目。
相关问题
#include <iostream> using namespace std; int main() { cout<<“nihao"<<endl; }指出可以改进的地方
这段代码可以改进的地方如下:
1. 缺少头文件:需要添加头文件 `#include <iostream>`
2. 使用不规范的中文引号:需要使用英文引号 `" "`
3. 缺少命名空间:需要添加 `using namespace std;`
4. 缺少返回值:需要在 `main()` 函数后添加返回值 `return 0;`
修改后的代码如下:
```c++
#include <iostream>
using namespace std;
int main() {
cout << "nihao" << endl;
return 0;
}
```
逐行解释#include <iostream> using namespace std; int main() { cout << "Hello, World!"; return 0; }
这段程序是一个C++语言的基础程序,它的作用是输出一句话 "Hello, World!"。下面是逐行解释:
- `#include <iostream>`:这一行代码表示引入iostream头文件,iostream是C++标准库中的输入输出流库。
- `using namespace std;`:这一行代码表示使用std命名空间,也就是说我们在使用标准库中的函数和对象时,可以直接使用std::的前缀,而不需要写出完整的命名空间。
- `int main() {`:这一行代码定义了主函数,也是程序的入口。
- `cout << "Hello, World!";`:这一行代码使用cout对象,将字符串 "Hello, World!" 输出到控制台。
- `return 0;`:这一行代码表示程序运行成功,返回值为0,然后结束程序。
阅读全文