This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "aplusb.h"
#include <set>
#include <tuple>
#include <map>
#include <utility>
#include <queue>
std::vector<int> smallest_sums(int n, std::vector<int> a, std::vector<int> b)
{
std::vector<int> c(n);
std::priority_queue<std::tuple<int, int, int>> q;
q.emplace(-a[0] + -b[0], 0, 0);
std::set<std::tuple<int, int>> ss;
for (int k=0;k<n;)
{
auto [aa,i,j]=q.top();q.pop();
if (ss.count({i, j})) continue;
ss.insert({i, j});
c[k]=-aa;
if(i+1<n) q.emplace(-a[i+1]+-b[j],i+1,j);
if(j+1<n) q.emplace(-a[i]+-b[j+1],i,j+1);
++k;
}
return c;
}
# | 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... |