제출 #991261

#제출 시각아이디문제언어결과실행 시간메모리
991261VMaksimoski008A Plus B (IOI23_aplusb)C++17
100 / 100
88 ms14344 KiB
#include "aplusb.h"
#include <bits/stdc++.h>
using namespace std;
using Node = array<int, 3>;

vector<int> smallest_sums(int N, std::vector<int> A, std::vector<int> B) {
	vector<int> ans;
	priority_queue<Node, vector<Node>, greater<Node> > pq;
	pq.push({ A[0] + B[0], 0, 0 });
	set<pair<int, int> > st;

	for(int it=0; it<N; it++) {
		auto [val, i, j] = pq.top(); pq.pop();
		ans.push_back(val);
		if(!st.count({ i+1, j })) {
			pq.push({ A[i+1] + B[j], i+1, j });
			st.insert({ i+1, j });
		}

		if(!st.count({ i, j+1 })) {
			pq.push({ A[i] + B[j+1], i, j+1 });
			st.insert({ i, j+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...