Pagini recente » Cod sursa (job #3174053) | Cod sursa (job #925500) | Trimiterea solutiilor | Cod sursa (job #2261607) | Cod sursa (job #3294561)
#include <bits/stdc++.h>
#define PERM_SIZE 26
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int rmq[200005][18];
int N, Q;
int query(int x, int y)
{
int lungime = y-x+1;
int p = 0;
while((1<<p) <= lungime){
p++;
}
p--;
return min(rmq[x][p],rmq[y-(1<<p)+1][p]);
}
int main()
{
fin >> N >> Q;
for (int i = 1; i <= N; i++)
{
fin >> rmq[i][0];
}
for (int lungime = 1; (1 << lungime) <= N; lungime++)
{
for (int i = 1; i + (1 << (lungime - 1)) <= N; i++)
{
rmq[i][lungime] = min(rmq[i][lungime - 1], rmq[i + (1 << (lungime - 1))][lungime - 1]);
}
}
for (int i = 1; i <= Q; i++)
{
int x, y;
fin >> x >> y;
fout<<query(x,y)<<'\n';
}
}