用了二分,问问各位大佬为什么WA了第一个点,和最后一点TLE了
查看原帖
用了二分,问问各位大佬为什么WA了第一个点,和最后一点TLE了
676591
Schrochanshun楼主2022/8/23 20:38
#include<bits/stdc++.h>
using namespace std;
int a[1000000],b[100000];
int n,m;
int search(int i)
{
    int l=0,r=n-1,mid;
    while(l<=r)
    {
        mid=l+(r-l)/2;
        if(a[mid]==b[i])
        {
        while(a[mid]==a[mid-1])
        {
            mid--;
        }
            return ++mid;
        }
        else if(a[mid]>b[i])
            r=mid-1;
        else
            l=mid+1;
    }
    return -1;
}
int main()
{
    int i;
    scanf("%d %d",&n,&m);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<m;i++)
    {
        scanf("%d",&b[i]);
    }
    for(i=0;i<m;i++)
        printf("%d ",search(i));
}
2022/8/23 20:38
加载中...