Pagini recente » Cod sursa (job #2046046) | Cod sursa (job #643604) | Cod sursa (job #1998901) | Cod sursa (job #1558898) | Cod sursa (job #1672918)
//package cautare_binara;
import java.io.*;
import java.util.StringTokenizer;
public class Main {
static int bin_search0(int []v, int n, int x) {
int low, high, middle;
low = 0;
high = n-1;
middle = (low + high) / 2;
while (low <= high) {
middle = (low + high) / 2;
if (v[middle] <= x) {
low = middle + 1;
}
if (v[middle] > x) {
high = middle -1;
}
}
if (v[middle] > x)
middle--;
if (v[middle] == x)
return middle;
return -1;
}
static int bin_search1(int []v, int n, int x) {
int low, high, middle;
low = 0;
high = n - 1;
while (low < high){
middle = (low + high) /2;
if (v[middle] <= x) {
low = middle + 1;
} else {
high = middle;
}
}
middle = (low + high) / 2;
if (v[middle] > x)
middle--;
return middle;
}
static int bin_search2(int []v, int n, int x) {
int low, high, middle;
low = 0;
high = n - 1;
while (low < high) {
middle = (low + high) /2;
if (v[middle] < x) {
low = middle + 1;
} else {
high = middle;
}
}
middle = (low + high) /2;
if (v[middle] < x)
middle++;
return middle;
}
public static void main(String[] args) throws FileNotFoundException, IOException {
BufferedReader br = new BufferedReader(new FileReader("cautbin.in"));
BufferedWriter bw = new BufferedWriter(new FileWriter("cautbin.out"));
int [] v = new int[100000];
int i, j, n, m, q, x, idx = -1;
String line;
//read n - size of vector
n = Integer.parseInt(br.readLine());
i = 0;
//read the n elements of v
line = br.readLine();
StringTokenizer st = new StringTokenizer(line, " ");
while (st.hasMoreTokens()){
v[i++] = Integer.parseInt(st.nextToken());
}
//read m
m = Integer.parseInt(br.readLine());
//read the m test cases
for(i = 0; i < m; i++) {
line = br.readLine();
st = new StringTokenizer(line, " ");
//read the question number
q = Integer.parseInt(st.nextToken());
//read the element
x = Integer.parseInt(st.nextToken());
switch (q) {
case 0:
idx = bin_search0(v, n, x);
break;
case 1:
idx = bin_search1(v, n, x);
break;
case 2:
idx = bin_search2(v, n, x);
break;
default:
break;
}
bw.write(idx + 1 +"\n");
}
br.close();
bw.close();
}
}