Pagini recente » Cod sursa (job #1730293) | Cod sursa (job #2832943) | Cod sursa (job #1653442) | Cod sursa (job #1198728) | Cod sursa (job #2512718)
#include <iostream>
#include <fstream>
#define ZERO 1000000000
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int Arr[100005],N,Q,k,table[100005][20];
int query (int st,int dr)
{
int rez=ZERO;
for (int i=k;i>=0;i--)
{
if (st+(1<<i)-1<=dr)
{
rez=min(rez,table[st][i]);
st=st+(1<<i);
}
}
return rez;
}
int main()
{
fin >> N >> Q;
for (int i=0;i<N;i++)
{
fin >> Arr[i];
table[i][0]=Arr[i];
}
for (int j=1;(1<<j)<=N;j++)
{
k++;
for (int i=0;i+(1<<j)<=N;i++)
{
table[i][j]=min(table[i][j-1],table[i+(1<<(j-1))][j-1]);
}
}
int st,dr;
for (int i=0;i<Q;i++)
{
fin >> st >> dr;
fout << query(st-1,dr-1) << '\n';
}
fin.close();
fout.close();
return 0;
}