这样第一个测试集怎么会报WA呢
查看原帖
这样第一个测试集怎么会报WA呢
723995
SoupEgg楼主2024/3/3 20:59
#include<iostream>
#include<stdlib.h>
using namespace std;

const int MAX_N = 1000001;
const int MAX_M = 100001;

long long int a[MAX_N];
int b[MAX_M];
int c[MAX_M];

int binarySearchLastOccurrence(int key, int low, int high) {
    int result = -1;
    
    while(low <= high){
		int mid = (low+high)/2;
		if(a[mid] == key && ((a[mid] != a[mid-1] && mid != 1) || mid == 1)){
			result = mid;
			break;
		}
		if(a[mid] >= key){
			high = mid-1;
		}else{
			low = mid+1;
		}
	}
	
    return result;
}

int main() {
    int n, m;
    cin >> n >> m;

    for (int i = 1; i <= n; i++) {
        cin >> a[i];
    }

    for (int j = 1; j <= m; j++) {
        cin >> b[j];
        c[j] = binarySearchLastOccurrence(b[j], 0, n - 1);
    }

    for (int j = 1; j <= m; j++) {
        cout << c[j] << " ";
    }

    return 0;
}

2024/3/3 20:59
加载中...