제출 #1000384

#제출 시각아이디문제언어결과실행 시간메모리
1000384thinknoexitA Plus B (IOI23_aplusb)C++17
100 / 100
39 ms5416 KiB
#include "aplusb.h" #include <bits/stdc++.h> using namespace std; using ll = long long; int n; int a[100100], b[100100]; vector<int> smallest_sums(int N, vector<int> A, vector<int> B) { n = N; for (int i = 1;i <= n;i++) a[i] = A[i - 1], b[i] = B[i - 1]; int l = 0, r = 2e9; while (l < r) { int mid = l + (r - l + 1) / 2; int p = n; ll ans = 0; for (int i = 1;i <= n;i++) { while (p > 0 && a[i] + b[p] >= mid) p--; ans += p; } if (ans >= n) r = mid - 1; else l = mid; } vector<int> ans; int p = n; for (int i = 1;i <= n;i++) { while (p > 0 && a[i] + b[p] >= l) p--; for (int j = 1;j <= p;j++) { ans.push_back(a[i] + b[j]); } } while ((int)ans.size() != n) ans.push_back(l); sort(ans.begin(), ans.end()); 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...