社区讨论
求助,最后一个点TLE
P2249【深基13.例1】查找参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lo2rd5c1
- 此快照首次捕获于
- 2023/10/23 18:31 2 年前
- 此快照最后确认于
- 2023/10/23 18:31 2 年前
CPP
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n,m;
cin >> n >> m;
int a[n+100];
for(int i=1;i<=n;i++) {
scanf("%d",&a[i]);
}
for(int i=1;i<=m;i++) {
int q;//1 1 2 3 5
scanf("%d",&q); //3
int l=1,r=n,mid=(l+n)/2;
while(l<r) {
int p=0;
if(q==a[l]) {
cout << l << " ";
break;
}else if(q==a[r]) {
for(int i=r;i>=1;i--) {
if(a[i]!=q) {
cout << i+1 << " ";
p=1;
break;
}
}
break;
} else if(q>a[mid]) {
l = mid;
}else if(q<a[mid]) {
r = mid;
}else if(q==a[mid]) {
for(int i=mid;i>=1;i--) {
if(a[i]!=q) {
cout << i+1 << " ";
p=1;
break;
}
}
}
if(p==1) {
break;
}
mid = (l+r)/2;
if(mid==r||mid==l) {
cout << -1 << " ";
break;
}
}
}
return 0;
}
RT
回复
共 1 条回复,欢迎继续交流。
正在加载回复...