**可否帮我改一下代码,谢谢**
by Zhaozimo1207 @ 2024-03-30 23:57:21
@[Zhaozimo1207](/user/965109)
问题:
0. 快读呢?
1. `find` 一点没对,全程`left`和`right`没改,只查找了随机一个 $x$ 的下标。
改完的:
```cpp
#include<cstdio>
#include<cctype>
#define forr(i,a,b) for(int i=(a);i<=(b);i++)
#define roff(i,a,b) for(int i=(a);i>=(b);i--)
typedef long long ll;
inline ll max(ll a,ll b){return a>b?a:b;}
inline ll min(ll a,ll b){return a<b?a:b;}
inline void gmax(ll&a,ll b){if(a<b)a=b;}
inline void gmin(ll&a,ll b){if(a>b)a=b;}
inline ll abs(ll x){return x>0?x:-x;}
inline ll mod(ll x,ll m){return (x%m+m)%m;}
inline ll swap(ll&a,ll&b){a^=b^=a^=b;}
inline ll powm(ll x,ll p,ll m){
ll ret=1;
while(p){
if(p&1)ret=mod(ret*x,m);
x=mod(x*x,m);p>>=1;
}
return ret;
}
inline ll gcd(ll a,ll b){
if(b==0)return a;
return gcd(b,a%b);
}
ll qr(){
ll ans=0;int ch=getchar();bool sgn=false;
while(!isdigit(ch)){if(ch=='-')sgn=true;ch=getchar();}
while(isdigit(ch)){ans=(ans<<3)+(ans<<1)+(ch^'0');ch=getchar();}
return sgn?-ans:ans;
}
void qw(ll d,const char* append="",bool firstch=true){
if(firstch){
if(!d)putchar('0');
if(d<0)putchar('-'),d=-d;
}
if(d){
qw(d/10,"",false);
putchar(d%10 + '0');
}
if(firstch)fputs(append,stdout);
}
ll n,m,a[100005];
int find(int x){
int left = 1,right = n;
int middle;
while(left < right){
middle = (left + right ) / 2;
if(x <= a[middle]) right = middle;
else left = middle + 1;
}
if(a[left] == x)return left;
return -1;
}
int main(){
n=qr();m=qr();
for(int i = 1;i <= n;i ++){
a[i]=qr();
}
for(int i = 1;i <= m;i ++){
qw(find(qr()),"\n");
}
return 0;
}
```
by Forgotten_0x1328FB6 @ 2024-03-31 00:34:03
@[Forgotten_0x1328FB6](/user/89343)
感谢,编程小白,已AC
by Zhaozimo1207 @ 2024-03-31 08:56:30