Pagini recente » Cod sursa (job #1145987) | Cod sursa (job #1871624) | Cod sursa (job #2801920) | Cod sursa (job #1909180) | Cod sursa (job #1280165)
//package temeJava;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
public class Main {
static int d[][];
static int a[];
static int n, m;
static void process() {
for (int i = 0; i < n; i++)
d[i][0] = a[i];
for (int j = 1; (1 << j) <= n; j++)
for (int i = 0; i + (1 << j) <= n; i++)
d[i][j] = Math.min(d[i][j - 1], d[i + (1 << (j - 1))][j - 1]);
}
static int querry(int x, int y) {
int lg = y - x + 1;
int pw = 0;
while ((1 << pw) <= lg)
pw++;
pw--;
return Math.min(d[x - 1][pw], d[y - (1 << pw)][pw]);
}
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("rmq.in"));
String line = br.readLine();
n = Integer.valueOf(line.split(" ")[0]);
m = Integer.valueOf(line.split(" ")[1]);
a = new int[n];
d = new int[n][20];
for (int i = 0; i < n; i++) {
line = br.readLine();
a[i] = Integer.valueOf(line);
}
process();
PrintWriter printer = new PrintWriter("rmq.out");
for (int i = 0; i < m; i++) {
line = br.readLine();
int x = Integer.valueOf(line.split(" ")[0]);
int y = Integer.valueOf(line.split(" ")[1]);
printer.printf("%d\n", querry(x, y));
}
printer.close();
br.close();
}
}