Pagini recente » Cod sursa (job #2094851) | Cod sursa (job #3323785) | Cod sursa (job #1378272) | Cod sursa (job #2006675) | Cod sursa (job #3335094)
#include <iostream>
#include <vector>
#include <fstream>
#include <bitset>
#include <algorithm>
#include <queue>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int mat[100004][17];
int put[100005];
int main()
{
int n,m;
fin>>n>>m;
for (int i=1; i<=n; i++)
fin>>mat[i][0];
put[1]=0;
for (int i=2; i<=n; i++)
put[i]=put[i/2]+1;
for (int j=1; j<=17; j++)
for (int i=1; i+(1<<j)-1<=n; i++)
mat[i][j]=min(mat[i][j-1],mat[i+(1<<(j-1))][j-1]);
while (m--) {
int x,y;
fin>>x>>y;
int lg=y-x+1;
int val=put[lg];
fout<<min(mat[x][val],mat[y-(1<<val)+1][val])<<"\n";
}
return 0;
}
// num=10,/=11,*=12,-=13,+=14,enter=15,.=16,