不知道为什么我第二题老是不能通过 #include<cstdio> (5862)#include<vector> using std::vector; #include<map> using std::multimap; int main() { int T=1; scanf("%d", &T); for (int t = 0; t != T; ++t) { int n = 3, m = 6; scanf("%d %d", &n, &m); multimap<int, int> a,b; int hope = 0; for (int i = 0; i != n; ++i) { scanf("%d", &hope); a.emplace(hope, i); } int real = 0; for (int i = 0; i != m; ++i) { scanf("%d", &real); b.emplace(real, i); } vector<int>ret(n, -2); for (auto& pr : a) { if (b.empty()) break; int tar = pr.first; auto it = b.upper_bound(tar); if ((--it)->first == pr.first) { ret[pr.second] = it->second; b.erase(it); } else { ++it; if (it == b.cend()) { ret[pr.second] = -2; break; } else { ret[pr.second] = it->second; b.erase(it); } } } for (auto& i : ret) printf("%d ", i + 1); printf("\n"); } return 0; }
点赞 评论

相关推荐

点赞 评论 收藏
分享
牛客网
牛客企业服务