本题我开了O2还是有一个点超时
代码如下
#include<bits/stdc++.h>
using namespace std;
int read(){
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9'){
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9'){
x=x*10+c-'0';
c=getchar();
}
return x*f;
}
int main()
{
static int a,b,e,f,g,h,sum=0,kk,m,ksum=0;
static int c[1000010];
a=read();
b=read();
for(int i=1;i<=a;++i)
c[i]=read();
for(e=1;e<=b;e++)
{
m=read();
f=1;
g=a;
while(f<g)
{ kk=f+g;
if(kk==3)
h=2;
else h=kk/2;
if(c[h]==m)
{
g--;
sum=h;
}
else if(c[h]<m)
f=h+1;
else g=h-1;
if(f==g)
{
h=f;
if(c[h]==m)
{
sum=h;
}
}
}
if(sum)
printf("%d ",sum);
else
printf("%d ",-1);
sum=0;
}
return 0;
}
那位大佬帮忙指正一下
谢谢