奇怪的问题出现了呢?
查看原帖
奇怪的问题出现了呢?
190823
max_to_the_oi楼主2020/9/10 00:27
#include<bits/stdc++.h>
#define N 1000001
#define rg register
#define max(a,b) (a > b ? a : b)
#define min(a,b) (a < b ? a : b)
#define MAXN 0x7fffff 
using namespace std;

int ciner,reader,sumer,num[N];

inline int find_into(int want){
	int where = -1,io = 1,sum = ciner,time_set = 0;
	int temp = (io + sum) / 2;
	while(where == -1 && io < sum){
		temp = (io + sum) / 2;
		if(num[temp] < want)io = temp;
		else if(num[temp] > want)sum = temp;
		else if(num[temp] == want){
			if(temp == 1)return 1;
			where = temp;
			while(num[where] == num[temp])where--;
			return where + 1;
		}
		if(time_set == 2 && sum == io + 1)io++;
		else if(sum == io + 1)time_set++;
	}
	return where;
}

inline void _file(void){
	freopen("data.in","r",stdin);
	freopen("data.out","w",stdout);
	return ;
}

inline int read(){
	int number = 0,flag = 1;
	char geter = cin.get();
	while((geter > '9' || geter < '0') && geter != '-')geter = cin.get();
	if(geter == '-')flag = -1;
	while(geter >= '0' && geter <= '9'){
		number = number * 10 + geter - '0';
		geter = cin.get();
	}
	return number * flag;
}

int main(void){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	//_file();
	cin >> ciner >> reader;
	for(int io = 1;io <= ciner;io++)cin >> num[io];
	while(reader--){
		cin >> sumer;
		int anser = find_into(sumer);
		cout << anser << " ";
	}
	cout << endl;
	return 0;
}
2020/9/10 00:27
加载中...