百度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笔试大胃王,提示运行错误,数组越界有大佬解答吗