求助 最后一点TLE怎么办
查看原帖
求助 最后一点TLE怎么办
387406
WinslowEric楼主2020/11/4 18:40
#include <stdio.h>
#include <algorithm>
#define maxn 1000001
using namespace std;
int numArray[maxn];
int main(){
    int n,m;
    int ans;
    int l,r,mid;
    scanf("%d%d",&n,&m);
    int numArray2[m];
    for(int i=1;i<=n;i++){
        scanf("%d",&numArray[i]);
    }
    for(int i=1;i<=m;i++){
        scanf("%d",&numArray2[i]);
    }
    for(int i=1;i<=m;i++){
        l=1;
        r=n;
        ans=-1;
        while(l<=r){
            mid=(l+r)/2;
            if(numArray[mid] == numArray2[i]){
                ans = mid;
                for(int j=mid;j>=1;j--){
                    if(numArray[j] != numArray2[i]){
                        break;
                    }else{
                        ans = j;
                    }
                }
                break;
            }
            if(numArray[mid] < numArray2[i]){
                l = mid+1;
            }else if(numArray[mid] > numArray2[i]){
                r = mid-1;
            }
        }
        printf("%d ",ans);
    }
    return 0;
}
2020/11/4 18:40
加载中...