求助!20分

P1571 眼红的Medusa

是按科技创新奖先后次序输出,弄反了
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


|