Pagini recente » Cod sursa (job #3196205) | Cod sursa (job #45311) | Cod sursa (job #2838800) | Cod sursa (job #2616575) | Cod sursa (job #1392608)
#include <iostream>
#include <fstream>
#define DN 100005
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int rmq[DN][22];
int n,m;
void read(){
f>>n>>m;
for(int i=1;i<=n;++i)
f>>rmq[i][0];
}
int find_min(int &a,int &b){
int p = 0;
for(; a + (1<<p) <=b ;++p); --p;
p = max(p,0);
return min(rmq[a][p],rmq[b - (1<<p) + 1][p]);
}
void solve(){
for(int p=1;p<=18;++p)
for(int i=1;i+(1<<(p-1))<=n;++i)
rmq[i][p] = min(rmq[ i ][ p - 1 ], rmq[i + (1<<(p-1)) ][ p - 1 ] );
for(;m--;){
int a,b;
f>>a>>b;
g<<find_min(a,b)<<"\n";
}
}
int main()
{
read();
solve();
return 0;
}