是按科技创新奖先后次序输出,弄反了
by liuzhaoheng @ 2023-11-29 20:38:15
```cpp
#include <cstdio>
#include <algorithm>
using namespace std;
int n,m,b[100005];
struct Node{
int s,id;
}a[100005];
inline bool cmp1(Node a,Node b){return a.s<b.s;}
inline bool cmp2(Node a,Node b){return a.id<b.id;}
int main(){
scanf ("%d%d",&n,&m);
for (int i=0;i<n;i++)scanf ("%d",&a[i].s),a[i].id=i;
for (int i=0;i<m;i++)scanf ("%d",&b[i]);
sort (a,a+n,cmp1);
sort (b,b+m);
int i=0,j=0;
for (;i<n;i++){
while (b[j]<a[i].s&&j<m)j++;
if (b[j]!=a[i].s)a[i].s=0;
}
sort (a,a+n,cmp2);
for (i=0;i<n;i++)if (a[i].s)printf ("%d ",a[i].s);
return 0;
}
```
by 12354abcdbc @ 2023-11-29 20:44:48
@[liuzhaoheng](/user/715288) 我排序了啊 要怎么改?
by Weekoder @ 2023-11-29 20:50:00
@[liyinuo20120328](/user/800884) 题目没有要求从小到大输出,排序是错的
by liuzhaoheng @ 2023-11-29 20:55:22
@[liuzhaoheng](/user/715288) 于是改成了30分 麻烦再看一下
```
#include <bits/stdc++.h>
using namespace std;
const int kMaxN = 1e5 + 1;
int n, m, a[kMaxN], b[kMaxN];
bool binary_search(int x) {
int l = 0, r = n + 1;
while (l + 1 != r) {
int m = l + ((r - l) >> 1);
if (b[m] <= x)
l = m;
else
r = m;
}
if (b[l] == x)
return 1;
else
return 0;
}
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i++) cin >> a[i];
for (int i = 1; i <= m; i++) cin >> b[i];
sort(b + 1, b + 1 + m);
for (int i = 1; i <= n; i++)
if (binary_search(a[i]))
cout << a[i] << " ";
return 0;
}
```
by Weekoder @ 2023-11-29 21:02:45
@[liyinuo20120328](/user/800884) r=n+1改成r=m+1
by liuzhaoheng @ 2023-11-29 21:15:22
@[liuzhaoheng](/user/715288) 过了过了,感谢大佬orz
by Weekoder @ 2023-11-29 21:31:23