Pagini recente » Cod sursa (job #2491156) | Cod sursa (job #1724327) | Cod sursa (job #2753362) | Cod sursa (job #2395814) | Cod sursa (job #2376787)
#include <bits/stdc++.h>
#define Nmax 100005
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int N,M,i,j,x,y,Log2[Nmax];
int RMQ[18][Nmax];
void Get_RMQ()
{
for(i=1;(1<<i)<=N;i++)
for(j=1;j+(1<<i)-1<=N;j++)
RMQ[i][j]=min(RMQ[i-1][j],RMQ[i-1][j+(1<<(i-1))]);
}
void Query(int X,int Y)
{
if(X>Y)swap(X,Y);
int K=Log2[Y-X+1];
g<<min(RMQ[K][X],RMQ[K][Y-(1<<K)+1])<<"\n";
}
int main()
{
f>>N>>M;
for(i=1;i<=N;i++)f>>RMQ[0][i];
for(i=2;i<=N;i++)Log2[i]=Log2[i/2]+1;
Get_RMQ();
while(M--)f>>x>>y,Query(x,y);
return 0;
}