結果
問題 | No.1597 Matrix Sort |
ユーザー |
![]() |
提出日時 | 2024-04-25 23:09:48 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 656 ms / 1,500 ms |
コード長 | 1,010 bytes |
コンパイル時間 | 2,186 ms |
コンパイル使用メモリ | 198,572 KB |
最終ジャッジ日時 | 2025-02-21 09:01:37 |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 27 |
ソースコード
#include <bits/stdc++.h> using namespace std; void fast_io() { ios_base::sync_with_stdio(false); cin.tie(nullptr); } int main() { fast_io(); int n, p; long long k; cin >> n >> k >> p; vector<int> a(n), b(n); for (int i = 0; i < n; i++) { cin >> a[i]; } for (int i = 0; i < n; i++) { cin >> b[i]; } sort(b.begin(), b.end()); int ng = -1, ok = p; while (ok - ng > 1) { int mid = (ok + ng) / 2; long long cnt = 0; for (int ai : a) { // ai + bj <= mid auto it = lower_bound(b.begin(), b.end(), mid - ai + 1); cnt += it - b.begin(); // p <= ai + bj <= p + mid auto it_1 = lower_bound(b.begin(), b.end(), p + mid - ai + 1); auto it_2 = lower_bound(b.begin(), b.end(), p - ai); cnt += it_1 - it_2; } if (cnt >= k) { ok = mid; } else { ng = mid; } } cout << ok << endl; }