奇怪的刮刮乐
奇怪
2023-09-27 14:26:25 时间
题目描述
彩票站新上市了一种奇怪的刮刮乐,这种刮刮乐分为两个区,第一个区有 M 个数字,第二个区有 N 个数字,如果一个数字同时出现在 M 和 N 两个区,则说明中了这个数字作为金额的奖,现给出一张彩票,按照 M 区数字的顺序输出所有获奖的金额,并在最后输出总获奖金额。
输入
输入共 3 行。
第一行两个整数 M,N。
第二行 M 个整数分别表示 M 区的号码 X1,X2…XM。(保证各不相同)
第三行 N 个整数分别表示 N 区的号码 Y1,Y2…YN。(保证各不相同)
输出
对于每次中奖,输出中奖金额,两次中奖金额之间用空格隔开。
第二行输出总获奖金额。
样例输入
5 5
1 3 26 7 15
15 10 3 7 2
样例输出
3 7 15
25
数据规模与约定
时间限制:1 s
内存限制:256 M
100% 的数据保证 1≤M,N≤100,000,1≤Xi,Yi≤1,000,000,000
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int m, n;
cin >> m >> n;
int num1[100005], num2[100005];
for (int i = 0; i < m; i++) {
cin >> num1[i];
}
for(int j = 0; j < n; j++) {
cin >> num2[j];
}
sort(num2, num2 + n);
long long sum = 0;
int f = 0;
for (int i = 0; i < m; i++) {
int l = 0, r = n - 1;
while (l <= r) {
int mid = (l + r) / 2;
if (num2[mid] == num1[i]) {
sum += num1[i];
if (f) cout << " ";
cout << num1[i];
f = 1;
}
if (num2[mid] < num1[i]) {
l = mid + 1;
}
else {
r = mid - 1;
}
}
}
cout << endl;
cout << sum << endl;
return 0;
}
相关文章
- 小师妹学JavaIO之:NIO中那些奇怪的Buffer
- 【BZOJ2756】奇怪的游戏(二分,网络流)
- <九度 OJ>题目1545:奇怪的连通图
- 96. 奇怪的汉诺塔【递推】
- PHP 中「自增、自减」运算引发的奇怪问题
- mac安装pyenv和遇到的奇怪问题
- 转:在linux中vi 文件里行尾奇怪的^M及解决
- [第五届蓝桥杯省赛C++B组]奇怪的分式
- win7(64)使用vim碰到的奇怪问题
- odoo13 奇怪现象
- hdu1180奇怪的楼梯……bfs迷阵……wa该16二级,我太渣滓
- DataReader不奇怪,该出手时就出手!
- Flutter开发 - Null check operator used on a null value(flutter大量奇怪异常)
- 多线程程序的奇怪问题记录
- 记录一次奇怪但是很有意义的程序编译警告