|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int n, m, e[5002], code, bujige = 0, shang = 0;
struct chengji{
int s = -1;
}cj[100000002];
bool cmp(chengji a, chengji b){
if (a.s == b.s){
return true;
}
return a.s > b.s;
}
int main() {
cin >> n >> m;
for(int i=1;i<=n;i++){
cin >> e[i];
}
for(int i=1;i<=m;i++){
cin >> code;
cin >> cj[code].s;
if(cj[code].s < 60){
bujige++;
}
}
sort(cj, cj + m);
for(int i=0;i<=m;i++){
if(cj[i].s != -1){
shang++;
}else{
break;
}
}
cout << n - shang << endl << bujige;
return 0;
}
cmp函数报错,为啥呀?
在这段代码中,cmp函数报错是因为它的返回类型应该是bool,但是你的cmp函数返回了true。这是不正确的。
在这里,你的cmp函数应该返回一个布尔值,表示a是否小于b。如果a小于b,返回true;如果a大于等于b,返回false。修改后的cmp函数如下所示:
- bool cmp(chengji a, chengji b){
- return a.s < b.s;
- }
复制代码
另外,你在调用sort函数时,应该传入的是cj数组的起始位置和结束位置,而不是m。因此,你应该将 sort(cj, cj + m); 修改为 sort(cj, cj + n + 1, cmp); 。
修改后的代码如下所示:
- #include <iostream>
- #include <cmath>
- #include <algorithm>
- using namespace std;
- int n, m, e[5002], code, bujige = 0, shang = 0;
- struct chengji{
- int s = -1;
- }cj[100000002];
- bool cmp(chengji a, chengji b){
- return a.s < b.s;
- }
- int main() {
- cin >> n >> m;
- for(int i=1;i<=n;i++){
- cin >> e[ i];
- }
- for(int i=1;i<=m;i++){
- cin >> code;
- cin >> cj[code].s;
- if(cj[code].s < 60){
- bujige++;
- }
- }
- sort(cj, cj + n + 1, cmp);
- for(int i=0;i<=n;i++){
- if(cj[ i].s != -1){
- shang++;
- }else{
- break;
- }
- }
- cout << n - shang << endl << bujige;
- return 0;
- }
复制代码
希望这可以帮助到你!
|
|