Pagini recente » Cod sursa (job #463174) | Cod sursa (job #935370) | Cod sursa (job #2506115) | Cod sursa (job #1601399) | Cod sursa (job #1671958)
package cautbin;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
public class Main {
static int n;
static int[] v;
public static int read (BufferedReader br) throws IOException{
String line = br.readLine();
int m;
n = Integer.valueOf(line.trim());
v = new int[n];
int i = 0;
line = br.readLine();
String[] splitted = line.split("\\s+");
for (String s : splitted){
v[i++] = Integer.valueOf(s);
}
line = br.readLine();
m = Integer.valueOf(line.trim());
return m;
}
public static int binSearch (int x, int st, int en){
int mid;
while (st < en-1){
mid = st + (en - st) /2;
if (v[mid] == x){
if (v[mid+1] == x){
st = mid;
}
else {
return mid+1;
}
}
if (v[mid] < x){
st = mid;
}
if (v[mid] > x){
en = mid;
}
}
return -1;
}
public static int binSearch2 (int x, int st, int en){
int mid;
while (st < en-1){
mid = st + (en - st) /2;
if (v[mid] <= x){
if (v[mid+1] <= x){
st = mid;
}
else {
return mid+1;
}
}
if (v[mid] < x){
st = mid;
}
if (v[mid] > x){
en = mid;
}
}
return -1;
}
public static int binSearch3 (int x, int st, int en){
int mid;
while (st < en-1){
mid = st + (en - st) /2;
if (v[mid] >= x){
if (v[mid-1] >= x){
en = mid;
}
else {
return mid+1;
}
}
if (v[mid] < x){
st = mid;
}
if (v[mid] > x){
en = mid;
}
}
return -1;
}
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new FileReader("cautbin.in"));
PrintWriter pw = new PrintWriter("cautbin.out");
int m = read(br);
String line;
String[] splitted;
for (int i = 0; i < m; i++){
line = br.readLine();
splitted = line.split("\\s+");
int type = Integer.parseInt(splitted[0]);
int x = Integer.parseInt(splitted[1]);
if (type == 0)
pw.write(String.valueOf(binSearch(x, 0, n) + "\n"));
if (type == 1)
pw.write(String.valueOf(binSearch2(x, 0, n) + "\n"));
if (type == 2)
pw.write(String.valueOf(binSearch3(x, 0, n) + "\n"));
}
pw.close();
br.close();
}
}