#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define all(v) v.begin(), v.end()
#include "aplusb.h"
vector<int> smallest_sums(int N, vector<int> a, vector<int> b) {
vector<int> res;
map<pair<ll,ll>, ll> vis;
priority_queue<array<ll,3>,vector<array<ll,3>>,greater<array<ll,3>>> pq;
pq.push({a[0] + b[0], 0, 0});
while(true){
auto[x, i, j] = pq.top();
pq.pop();
res.push_back(x);
if(vis.find({i + 1, j}) == vis.end()) pq.push({a[i + 1] + b[j], i + 1, j});
if(vis.find({i, j + 1}) == vis.end()) pq.push({a[i] + b[j + 1], i, j + 1});
vis[{i + 1, j}] = 1;
vis[{i, j + 1}] = 1;
if(res.size() == N) break;
}
return {res};
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |