Submission #877689

#TimeUsernameProblemLanguageResultExecution timeMemory
877689eldorbek_008A Plus B (IOI23_aplusb)C++17
100 / 100
42 ms5028 KiB
#include "aplusb.h"
#include <bits/stdc++.h>
 
using namespace std;
 
// #define int long long
#define all(x) (x).begin(), (x).end()
 
inline bool check(vector<int> A, vector<int> B, int x) {
	
	int id = (int)A.size();
	
	for (int i = 0; i < (int)A.size(); i++) {
		for (int j = 0; j < (int)B.size(); j++) {
			if (A[i] + B[j] <= x) {
				--id;
			} else break;
			
			if (!id) return true;
		}
	}
	
	return false;
}
 
vector<int> smallest_sums(int N, vector<int> A, vector<int> B) {
	
	int l = -1, r = (int)2e9 + 1;
	
	while (r - l > 1) {
		int mid = (l + r) / 2;
		
		if (check(A, B, mid)) r = mid;
		else l = mid;
	}
	
	vector<int> C;
	
	for (int i = 0; i < (int)A.size(); i++) {
		for (int j = 0; j < (int)B.size(); j++) {
			if (A[i] + B[j] <= r) {
				C.push_back(A[i] + B[j]);
			} else break;
		}
		
		// if ((int)C.size() == (int)A.size()) break;
	}
	
	sort(all(C));
	C.resize((int)A.size());
	
	return C;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...