Pagini recente » Cod sursa (job #67149) | Produse | Cod sursa (job #307197) | Cod sursa (job #313357) | Cod sursa (job #1315510)
#include<fstream>
#define MAXN 100001
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int RMQ[18][MAXN], lg[18];
int i, j;
void init (int n) {
for(i = 1; i <= lg[n]; i ++) {
for(j = 1; 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];
j = e - (1 << i) + 1;
return min(RMQ[i][b], RMQ[i][j]);
}
int main() {
int n, q, b, e;
lg[0] = -1;
fin>>n>>q;
for(int i=1; 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;
}