new file: P1631.cpp
This commit is contained in:
1 parent
ceaa8e6583
commit
d54592c27a
2 files changed
+65
No files matched your search
@@ -0,0 +1,26 @@
|
||||
#include <bits/stdc++.h>
|
||||
using namespace std;
|
||||
int n;
|
||||
int a[100005], b[100005];
|
||||
int main() {
|
||||
scanf("%d", &n);
|
||||
for (int i = 1; i <= n; ++i) {
|
||||
scanf("%d", &a[i]);
|
||||
}
|
||||
for (int i = 1; i <= n; ++i) {
|
||||
scanf("%d", &b[i]);
|
||||
}
|
||||
priority_queue<pair<int, pair<int, int>>, vector<pair<int, pair<int, int>>>,
|
||||
greater<pair<int, pair<int, int>>>>
|
||||
q;
|
||||
for (int i = 1; i <= n; ++i)
|
||||
q.push({a[i] + b[1], {i, 1}});
|
||||
for (int i = 1; i <= n; ++i) {
|
||||
printf("%d ", q.top().first);
|
||||
auto t = q.top();
|
||||
q.pop();
|
||||
q.push({a[t.second.first] + b[t.second.second + 1],
|
||||
{t.second.first, t.second.second + 1}});
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
# P1631 序列合并
|
||||
|
||||
## 题目描述
|
||||
|
||||
有两个长度为 $N$ 的**单调不降**序列 $A,B$,在 $A,B$ 中各取一个数相加可以得到 $N^2$ 个和,求这 $N^2$ 个和中最小的 $N$ 个。
|
||||
|
||||
## 输入格式
|
||||
|
||||
第一行一个正整数 $N$;
|
||||
|
||||
第二行 $N$ 个整数 $A_{1\dots N}$。
|
||||
|
||||
第三行 $N$ 个整数 $B_{1\dots N}$。
|
||||
|
||||
## 输出格式
|
||||
|
||||
一行 $N$ 个整数,从小到大表示这 $N$ 个最小的和。
|
||||
|
||||
## 输入输出样例 #1
|
||||
|
||||
### 输入 #1
|
||||
|
||||
```
|
||||
3
|
||||
2 6 6
|
||||
1 4 8
|
||||
```
|
||||
|
||||
### 输出 #1
|
||||
|
||||
```
|
||||
3 6 7
|
||||
```
|
||||
|
||||
## 说明/提示
|
||||
|
||||
对于 $50\%$ 的数据,$N \le 10^3$。
|
||||
|
||||
对于 $100\%$ 的数据,$1 \le N \le 10^5$,$1 \le A_i,B_i \le 10^9$。
|
||||
Reference in new issue
Block a user