Pagini recente » Cod sursa (job #2915490) | Cod sursa (job #3229415) | Cod sursa (job #2532609) | Cod sursa (job #1400382) | Cod sursa (job #3156888)
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int rmq[1001][18]={0};
int cautare(int x, int y){
int mini=100001;
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;
}