最后一个TLE求助
查看原帖
最后一个TLE求助
324709
AHXBXA楼主2021/7/6 16:10
#include <stdio.h>
int main()
{
    int n, m;
    scanf("%d %d", &n, &m);
    int A[n + 10], B[m + 10];
    int i = 0;
    while (i < n)
        scanf("%d", &A[i++]);
    i = 0;
    while (i < m)
        scanf("%d", &B[i++]);
    for (i = 0; i < m; i++)
    {
        int L = 0, R = n - 1, Mid;
        for (;;)
        {
            int temp = R - L;
            Mid = (L + R) / 2;
            if (A[Mid] > B[i])
                R = Mid;
            else if (A[Mid] < B[i])
                L = Mid;
            if (A[Mid] == B[i])
            {
                while (Mid - 1 >= 0 && A[Mid - 1] == A[Mid])
                    Mid--;
                printf("%d ", Mid + 1);
                break;
            }
            if (L == R || temp == R - L)
            {
                printf("-1 ");
                break;
            }
        }
    }

    return 0;
}
2021/7/6 16:10
加载中...