Submission #1357927

#TimeUsernameProblemLanguageResultExecution timeMemory
1357927vjudge1A Plus B (IOI23_aplusb)C++20
0 / 100
1095 ms344 KiB
#include "aplusb.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

void dbg() { cout << "\n"; }
template<typename H, typename... T>
void dbg(H h, T... t) {
    cout << h << " ";
    dbg(t...);
}


std::vector<int> smallest_sums(int N, std::vector<int> A, std::vector<int> B) {
	int l = 1, r = 2e9;
	int ans = 0;
	while (l < r) {
		int mid = (l+r)/2;
		int cnt = 0;
		for (int i = 0; i < N; i++) {
			int need = mid-A[i];
			cnt += (upper_bound(B.begin(),B.end(),need)-B.begin());
			// dbg(i,(upper_bound(B.begin(),B.end(),need)-B.begin()));
		}
		// dbg(mid,cnt);
		if (cnt < N) l = mid+1;
		else r = mid, ans = cnt;
		// break;
	}
	vector<int> v;
	for (int i = 0; i < N; i++) {
		int need = l-A[i];
		for (int j = 0; j < upper_bound(B.begin(),B.end(),need)-B.begin(); j++) {
			v.push_back(A[i]+B[j]);
		}
	}
	sort(v.begin(),v.end());
	vector<int> b;
	for (int i = 0; i < N; i++) b.push_back(v[i]);
	// dbg(l,ans);
	return b;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...