Pagini recente » Cod sursa (job #2969400) | Cod sursa (job #190141) | Cod sursa (job #3003053) | Cod sursa (job #2839237) | Cod sursa (job #750704)
Cod sursa(job #750704)
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;
#define min(a,b) a<b?a:b
int main(){
const int inf=1<<30;
ofstream cour ("rmq.out");
ifstream cinr ("rmq.in");
int n1,n,m;
cinr >> n1; cinr >> m;
n=1<<int(log(n1-1)/log(2)+1);
vector<int> v(2*n, inf);
for(int i=n; i<n+n1; i++){ cinr >> v[i]; }
//preprocessing:
for(int i=n-1; i>0; i--){
v[i]=min(v[2*i], v[2*i+1]);
}
//cautare:
int l,r,a;
for(int i=1; i<=m; i++){
cinr >> l; cinr >> r;
l+=n-1; r+=n-1;
a=inf;
while(l<=r){
if(l%2==1){ a=min(a, v[l]); }
if(r%2==0){ a=min(a, v[r]); }
l=(l+1)/2;
r=(r-1)/2;
}
cour << a << "\n";
}
cinr.close();
cour.close();
//cin.ignore(2);
return 0;
}