Pagini recente » Cod sursa (job #1720770) | Cod sursa (job #2135508) | Cod sursa (job #1108884) | Cod sursa (job #1693949) | Cod sursa (job #2309641)
#include <bits/stdc++.h>
#define N 50005
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int n,q,v[100005][25];
int pt[25];
int query(int a, int b)
{
if(a>b)
swap(a,b);
int nr=b-a+1;
int s=log2(nr);
int o=pt[s];
int u=a+nr-o;
return min(v[a][s],v[u][s]);
}
int main()
{
in >> n >> q;
for(int i=1; i<=n; i++)
{
in >> v[i][0];
}
pt[0]=1;
int j=0;
while(pt[j]<n)
{
pt[++j]=pt[j-1]*2;
for(int i=1; i<=n-pt[j-1]; i++)
{
v[i][j]=min(v[i][j-1],v[i+pt[j-1]][j-1]);
}
}
for(int i=0; i<q; i++)
{
int a,b;
in >> a >> b;
out << query(a,b) << '\n';
}
return 0;
}