CloseAI @ 2023-04-19 18:07:18
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
int m,n;
cin>>m>>n;
int *a=new int[m+1];
int *b=new int[n];
for(int i=1; i<=m; i++)
cin>>a[i];
for(int i=0; i<n; i++)
cin>>b[i];
for(int i=0; i<n;i++) {
int ans=lower_bound(a+1,a+1+m,b[i])-a;
if(a[ans]!=b[i])
cout<<-1;
else cout<<ans;
if(i!=n-1)
cout<<ends;
}
delete[] a;
delete[] b;
return 0;
}
by JYW2011 @ 2023-04-19 18:22:12
输出格式错误,应该是空格,而不是 tab。 特判没有考虑全面。如果修改为使用 if 判读,应该是 if (a[ans] == b[i]) cout << ans; else cout << -1;。
by JYW2011 @ 2023-04-19 18:22:56
@eam3939
by __er @ 2023-04-19 18:42:15
@eam3939 建议不要用 new
,申请那么大一块动态内存,随便卡卡就炸了
这题不是 new
的问题,以后打大型比赛别用
by CloseAI @ 2023-04-20 17:37:29
@JYW2011 哦哦哦,原来是这样,太感谢了
by CloseAI @ 2023-04-20 17:39:42
@__er 这样啊,主要是我刚学了动态申请内存,想试一试,谢谢提醒。