int jingshi(vector<int> &candy, int hunger) { for (int i = candy.size() - 1; i >= 0; i--) { if (candy[i] > hunger || candy[i] == -1) continue; else if (hunger >= candy[i]) { hunger = hunger - candy[i]; candy[i] = -1; } } return hunger; } int main() { int n, m; cin >> n >> m; vector<int> candy; for (int i = 0; i < m; i++) { int tmp; cin >> tmp; candy.push_back(tmp); } sort(candy.begin(), candy.end()); vector<vector<int>> hunger; for (int i = 0; i < n; i++) { int tmp1, tmp2; cin >> tmp1; cin >> tmp2; hunger.push_back({ tmp1, tmp2, i }); } sort(hunger.begin(), hunger.end(), [](vector<int> vec1, vector<int> vec2){return vec1[0] > vec2[0];}); for (int i = 0; i < n; i++) { int tmp = hunger[i][1]; int res = jingshi(candy, tmp); hunger[i][1] = res; } sort(hunger.begin(), hunger.end(), [](vector<int> vec1, vector<int> vec2){return vec1[2] < vec2[2]; }); for (int i = 0; i < n; i++) cout << hunger[i][1] << endl; return 0; }
点赞 1

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务