Pagini recente » Cod sursa (job #1201564) | Cod sursa (job #1666125) | Cod sursa (job #2687044) | Cod sursa (job #2643640) | Cod sursa (job #1506871)
import java.io.*;
import java.util.Scanner;
public class Main {
static int [][] rmq = new int [18][100002];
static int [] log = new int [100002];
public static void main(String []args) throws IOException
{
Scanner in = new Scanner(new FileInputStream("rmq.in"));
PrintWriter out = new PrintWriter("rmq.out");
int n = in.nextInt(), x, y;
int m = in.nextInt();
for(int i=1;i<=n;++i)
rmq[0][i] = in.nextInt();
for(int i=2;i<=n;++i)
log[i] = log[i/2]+1;
for(int i=1;i<18;++i)
{
int p = 1<<(i-1);
for(int j = 1;j + 2*p-1 <= n;++j)
rmq[i][j] = min(rmq[i-1][j],rmq[i-1][j+p]);
}
while(m-->0)
{
x = in.nextInt();
y = in.nextInt();
out.write(String.valueOf(Query(x,y))+"\n");
}
in.close();
out.close();
}
public static int min(int x,int y)
{
return x<=y?x:y;
}
public static int Query(int x,int y)
{
int L = log[y-x+1];
return min(rmq[L][x],rmq[L][y-(1<<L)+1]);
}
}