Pagini recente » Cod sursa (job #2699203) | Cod sursa (job #3173435) | Cod sursa (job #2819323) | Cod sursa (job #696726) | Cod sursa (job #2761371)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int m[100002][20],a[100002];
int main()
{
int n,t,i,j;
fin>>n>>t;
for(i=1;i<=n;i++)
{
fin>>a[i];
m[i][0]=i;
}
for(j=1;1<<j<=n;j++)
{
for(i=1;i+(1<<j)-1<=n;i++)
{
if(a[m[i][j-1]]<=a[m[i+(1<<j)-1][j-1]])
m[i][j]=m[i][j-1];
else
m[i][j]=m[i+(1<<j)-1][j-1];
}
}
while(t--)
{
fin>>i>>j;
int k=log(j-i+1);
fout<<min(a[m[i][k]],a[m[j-(1<<k)+1][k]])<<'\n';
}
return 0;
}