Pagini recente » Cod sursa (job #1314203) | Cod sursa (job #420107) | Cod sursa (job #1340304) | Cod sursa (job #2846797) | Cod sursa (job #2541272)
#include <cstdio>
#include <climits>
#include <vector>
#define LengthMax 16*1024
#define LevelMax 14
using namespace std;
int log2[LengthMax],before[LengthMax][LevelMax]={INT_MAX},length;
int takeMin(int x,int y) {
return (x<y)*(x-y)+y;
}
void read(int&q) {
int i;
scanf("%d%d",&length,&q);
for(i=0;i<length;++i) {
scanf("%d",&before[0][i]);
}
}
void formLog2() {
int i;
for(i=2;i<length;++i) {
log2[i]=log2[i>>1]+1;
}
}
void formBefore() {
int l,p,minim;
for(l=1;l<log2[length];++l) {
for(p=(1<<l),i=0;i+p<length;++i) {
;
}
}
}
void form() {
formLog2();
formBefore();
}
void solve() {
int x1,x2,ind;
scanf("%d%d",&x1,&x2);
ind=log2[x2-x1];
printf("%d\n",takeMin(before[ind][y],before[ind][x+(1<<ind)-1]));
}
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
int q,iq;
read(q);
form();
for(iq=0;iq<q;++iq) {
solve();
}
return 0;
}