Pagini recente » Cod sursa (job #1000366) | Cod sursa (job #2206780) | Cod sursa (job #1961273) | Cod sursa (job #112976) | Cod sursa (job #968063)
Cod sursa(job #968063)
#include <fstream>
#include <cmath>
#include <vector>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
vector <int> d[17];
int n, m, q1, q2, k, z, di=1;
int mint(int x, int y){
return x<y?x:y;
}
int main(){
f>>n>>m;
d[0].push_back(0);
for (int i=1;i<=n;++i){
f>>k;
d[0].push_back(k);
}
z=(int)log2(n);
//g<<z<<'\n';
for (int i=1;i<=z;++i){
d[i].push_back(0);
for (int j=1;j<=n+1-(1<<i);++j){
k=mint(d[i-1][j], d[i-1][j+(1<<(i-1))]);
d[i].push_back(k);
//g<<k<<' ';
}
//g<<'\n';
}
//g<<"\n\n";
for (int i=1;i<=m;++i){
f>>q1>>q2;
k=q2-q1+1;
z=(int)log2(k);
//g<<"z="<<z<<'\n';
g<<mint(d[z][q1], d[z][q2-(1<<(z))+1])<<'\n';
}
g.close();
return 0;
}