百度9.14笔试大胃王,提示运行错误,数组越界有大佬解答吗
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
for (int var = 0; var < n; ++var) {
int siz;
int k;
cin >> siz >> k;
if (siz == 0 || siz > 1000) {
cout << -1 << endl;
break;
}
if (k == 0 || k > 10000) {
cout << -1 << endl;
break;
}
vector<pair<int, int>> v(siz);
for (int var = 0; var < v.size(); ++var) {/*记录菜序号和菜量*/
pair<int, int> p;
p.first = var + 1;
cin >> p.second;
v.at(var) = p;
}
if (v.size()) {
sort(v.begin(), v.end(), [](pair<int, int> x, pair<int, int> y) {/*菜按菜量排序*/
return (int) (x.second >= y.second);
});
}
vector<int> ans;
int sum = 0;
int i = 0;
bool ok = 0;
while (v.size() > 0 && i < v.size()) {/*从大到小开始吃,吃了的放进ans*/
sum += v.at(i).second;
ans.push_back(v.at(i).first);
if (sum >= k) {
ok = 1;
break;
}
i++;
}
if (!ok) {
cout << -1 << endl;
} else {
cout << ans.size() << endl;
for (int var = 0; var < ans.size(); ++var) {
if (var == ans.size() - 1) {
cout << ans.at(var);
break;
}
cout << ans.at(var) << ' ';
}
cout << endl;
}
}
return 0;
} 百度9.14笔试大胃王,提示运行错误,数组越界有大佬解答吗

CVTE公司福利 732人发布
