Submission #849143

#TimeUsernameProblemLanguageResultExecution timeMemory
849143emad234A Plus B (IOI23_aplusb)C++17
100 / 100
59 ms8972 KiB
#include <bits/stdc++.h>
#define all(v) ((v).begin(),(v).end())
#define ll long long
#define F first
#define S second
const ll mod = 1e9 + 7;
const ll mxN = 1e5 + 2;
using namespace std;
struct number{
	int val,iA,iB;
};
bool operator<(number a,number b){
	return a.val < b.val;
}

vector<int> smallest_sums(int N, vector<int> A, vector<int> B) {
	vector<int>ans;
	multiset<number>s;
	for(int i = 0;i < N;i++){
		s.insert({A[0] + B[i],0,i});
	}
	for(int i =0;i < N;i++){
		ans.push_back((*(s.begin())).val);
		int iA = (*(s.begin())).iA;
		int iB = (*(s.begin())).iB;
		s.erase(s.begin());
		s.insert({A[iA + 1] + B[iB],iA + 1,iB});
		// cout<<A[iA + 1] + B[iB]<<' '<<iA + 1<<' '<<iB<<'\n';
	}
	return ans;
}

// 
// int main() {
// 	int N;
// 	assert(1 == scanf("%d", &N));
// 	std::vector<int> A(N);
// 	for (int i = 0; i < N; ++i)
// 		assert(1 == scanf("%d", &A[i]));
// 	std::vector<int> B(N);
// 	for (int i = 0; i < N; ++i)
// 		assert(1 == scanf("%d", &B[i]));
// 
// 	fclose(stdin);
// 
// 	std::vector<int> res = smallest_sums(N, A, B);
// 
// 	int n = res.size();
// 	for (int i = 0; i < n; ++i) {
// 		if (i > 0)
// 			printf(" ");
// 		printf("%d", res[i]);
// 	}
// 	printf("\n");
// 	fclose(stdout);
// 
// 	return 0;
// }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...