Pagini recente » Cod sursa (job #1376973) | Cod sursa (job #1915878) | Cod sursa (job #1109781) | Profil Sykz | Cod sursa (job #2722842)
import java.io.*;
//0 x - cea mai mare pozitie pe care se afla un element cu valoarea x sau -1 daca aceasta valoare nu se gaseste in sir
//1 x - cea mai mare pozitie pe care se afla un element cu valoarea mai mica sau egala cu x in sir. Se garanteaza ca cel mai mic numar al sirului este mai mic sau egal decat x
//2 x - cea mai mica pozitie pe care se afla un element cu valoarea mai mare sau egala cu x in sir. Se garanteaza ca cel mai mare numar din sir este mai mare sau egal decat x
public class Main {
public static int solution(int type, int x, int[] arr, int n) {
int pos, step;
switch (type) {
case 2:
for (pos = -1, step = 1 << 8; step > 0; step >>= 1)
if (pos + step < n && arr[pos + step] < x)
pos += step;
return pos + 2;
default:
for (pos = -1, step = 1 << 8; step > 0; step >>= 1)
if (pos + step < n && arr[pos + step] <= x)
pos += step;
return pos + 1;
}
}
public static void main(String[] args) throws FileNotFoundException, IOException {
BufferedReader in = new BufferedReader(new FileReader("cautbin.in"));
PrintStream out = new PrintStream("cautbin.out");
int n = Integer.parseInt(in.readLine());
int[] arr = new int[n];
String[] s = in.readLine().split("\\s+");
for (int i = 0; i < n; ++i)
arr[i] = Integer.parseInt(s[i]);
int m = Integer.parseInt(in.readLine());
while (m-- > 0) {
s = in.readLine().split("\\s+");
out.printf("%d\n", solution(Integer.parseInt(s[0]), Integer.parseInt(s[1]), arr, n));
}
in.close();
out.close();
}
}