Pagini recente » Cod sursa (job #3122715) | Cod sursa (job #1813981) | Cod sursa (job #2640340) | Cod sursa (job #1417373) | Cod sursa (job #2787493)
#include<fstream>
#include <iostream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n,q,exp,rmq[1002][1002],p;
int main()
{
fin>>n>>q;
for(int i=1; i<=n; i++)
fin>>rmq[i][0];
for(int lg=2, exp=1; lg<=n; lg*=2,exp++) ///se construieste matricea
for(int i=1; i+lg-1<=n; i++)
rmq[i][exp]=min(rmq[i][exp-1],rmq[i+lg/2][exp-1]);
while(q)
{
int x,y;
fin>>x>>y;
int lg=y-x+1;
p=1;
exp=0;
while(p<=lg)
{
p*=2;
exp++;
}
p/=2;
exp--;
int rasp_stanga=rmq[x][exp];
int rasp_dreapta=rmq[y-p+1][exp];
fout<<min(rasp_stanga,rasp_dreapta)<<'\n';
q--;
}
}