Submission #843749

#TimeUsernameProblemLanguageResultExecution timeMemory
843749PagodePaivaA Plus B (IOI23_aplusb)C++17
100 / 100
102 ms17412 KiB
#include "aplusb.h" #include<bits/stdc++.h> using namespace std; std::vector<int> smallest_sums(int N, std::vector<int> A, std::vector<int> B) { priority_queue <tuple <int, int, int>> pq; int n = N; pq.push({-A[0]-B[0], 0, 0}); map <pair <int, int>, int> mark; mark[{0, 0}] = 1; vector <int> ans; for(int i = 0;i < N;i++){ auto [v, l, r] = pq.top(); pq.pop(); v *= -1; ans.push_back(v); if(!(mark[{l, r+1}] == 1 or (l >= n or r >= n))){pq.push({-A[l]-B[r+1], l, r+1}); mark[{l, r+1}] = 1;} if(!(mark[{l+1, r}] == 1 or (l >= n or r >= n))){pq.push({-A[l+1]-B[r], l+1, r}); mark[{l+1, r}] = 1;} } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...