Pagini recente » Cod sursa (job #446744) | Cod sursa (job #1956472) | Cod sursa (job #2572989) | Cod sursa (job #1284945) | Cod sursa (job #750839)
Cod sursa(job #750839)
#include<stdio.h>
#define dim 200000
int i , n , m , x , y ,lungime,j,min=99999999;
int P[dim];
int A[dim][30];
FILE*f=fopen("rmq.in","r");
FILE*g=fopen("rmq.out","w");
int minim(int a, int b){
if(a<b)
return a;
return b;
}
int main(){
fscanf(f,"%d%d",&n,&m);
for(i=1;i<=n;i++)
fscanf(f,"%d",&A[i][0]);
for(j=1;(1<<j)<=n;j++){
for(i=1;i<=n-j+1;i++){
A[i][j]=minim( A[i][j-1], A[ i+(1<<(j-1)) ] [j-1] );
}
}
for(i=2;i<=n;i++)
P[i]=1+P[i/2];
for(i=1;i<=m;i++){
fscanf(f,"%d%d",&x,&y);
lungime=y-x+1;
fprintf(g,"%d\n",minim(A[x][P[lungime]],A[y-(1<<P[lungime])+1][P[lungime]]));
}
return 0;
}