这哪里是二分查找啊,这分明是赤裸裸的java歧视
你卡个1S,125M内存,会TLE啊,伙计们
package info.frady.luogu;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StreamTokenizer;
import java.util.StringTokenizer;
public class P2249 {
static int[] arr;
public static void main(String[] args) throws Exception {
//BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
///StringTokenizer st = new StringTokenizer(reader.readLine());
StreamTokenizer st=new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
st.nextToken();
int N = (int)st.nval;//数字个数
st.nextToken();
int M = (int)st.nval;//询问次数
arr = new int[N + 1];
arr[0]=-1009;
//st = new StringTokenizer(reader.readLine());
for (int i = 1; i <= N; i++) {
st.nextToken();
arr[i] = (int)st.nval;
}
StringBuilder ans = new StringBuilder();
for (int i = 0; i < M; i++) {
st.nextToken();
ans.append(find( (int)st.nval)).append(' ');
}
System.out.println(ans.toString());
//reader.close();
}
public static int find(int a) {//数组多开了一个,从1开始
int low = 1;
int high = arr.length - 1;
int res=-1;
while (high > low) {
int mid = low+(high-low) / 2;
if (arr[mid] >= a) {
high = mid;
} else {
low = mid + 1;
}
}
if (a==arr[low]) {
return low;
}else {
return -1;
}
}
}