二分最后一个tel了。。。大佬帮忙看看。
查看原帖
二分最后一个tel了。。。大佬帮忙看看。
435311
lkxadcf楼主2021/10/7 19:14
#include<iostream>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<cstdio>
using namespace std;
#define MAX 5000

int read()
{
	char c;
	int sum = 0 , f = 1;
	c = getchar();
	while (c > '9' || c < '0') {
		if (c == '-') {
			f = -1;
		}
		c = getchar();
	}
	while (c >= '0' && c <= '9') {
		sum = sum * 10 + (c - '0');
		c = getchar();
	}
	return sum * f;
}

int main()
{
	int len, m;
	int a[1000000000];
	int falg;
	cin >> len >> m;
	for (int i = 0; i < len; i++) {
		a[i] = read();
	}
	for (int i = 0; i < m; i++) {
		bool temp = false;
		falg = read();
		int left = 0, right = len - 1;
		int mid = 0;
		while (left <= right) {
			mid = (left + right) / 2;
			if (a[mid] == falg) {
				temp = true;
				break;
			}
			else if (a[mid] > falg) {
				right = mid - 1;
			}
			else {
				left = mid + 1;
			}
		}
		if (temp) {
			while (mid >= 0) {
				if (a[mid] != falg) {
					break;
				}
				mid--;
			}
			cout << mid + 2 << " " ;
		}
		else {
			cout << "-1" << " " ;  
		}
	}
 	return 0;
}
2021/10/7 19:14
加载中...