Pagini recente » Cod sursa (job #1421079) | Cod sursa (job #1454141) | Cod sursa (job #3254733) | Cod sursa (job #3191457) | Cod sursa (job #3156890)
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int rmq[100001][20];
int cautare(int x, int y){
int mini=1000001;
if(x>y){
swap(x,y);
}
while(x<=y){
int p=1,exp=0;
while(p*2<=(y-x+1)){
p*=2;
exp++;
}
mini=min(mini,rmq[exp][x]);
x+=p;
}
return mini;
}
int main()
{
int n,m,i,j,p=1,x,y;
fin>>n>>m;
for(i=1; i<=n; i++){
fin>>rmq[0][i];
}
for(i=1; (1<<i)<=n; i++){
for(j=1; j+p<=n; j++){
rmq[i][j]=min(rmq[i-1][j],rmq[i-1][j+p]);
}
p*=2;
}
for(int k=1; k<=m; k++){
fin>>x>>y;
fout<<cautare(x,y)<<endl;
}
// for(i=0; i<=n; i++){
// for(j=1; j<=n; j++){
// fout<<rmq[i][j]<<" ";
// }
// fout<<"\n";
// }
return 0;
}