Pagini recente » Cod sursa (job #2099820) | Cod sursa (job #196325) | Cod sursa (job #678153) | Cod sursa (job #1831851) | Cod sursa (job #1315532)
#include<fstream>
#define MAXN 100005
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int RMQ[20][MAXN], lg[MAXN];
int i, j;
void init (int n) {
for(i = 1; (1 << i) <= n; i ++) {
for(j = 0; j < n - (1 << i) + 1; j ++) {
RMQ[i][j] = min(RMQ[i-1][j], RMQ[i-1][j + (1 << (i-1))]);
}
}
}
int rmq (int b, int e) {
i = lg[e - b + 1];
b--;e--;
return min(RMQ[i][b], RMQ[i][ e + 1 - (1 << i)]);
}
int main() {
int n, q, b, e;
lg[0] = -2;
fin>>n>>q;
for(int i=0; i<n; i++) {
fin>>RMQ[0][i];
lg[i] = lg[i/2] + 1;
}
init(n);
while(q--) {
fin>>b>>e;
if(b>e) swap(b, e);
fout<<rmq(b, e)<<"\n";
}
return 0;
}