Pagini recente » Cod sursa (job #2440838) | Cod sursa (job #2919768) | Cod sursa (job #2476138) | Cod sursa (job #1504355) | Cod sursa (job #1111912)
#include<stdio.h>
#include<algorithm>
using namespace std;
FILE *in,*out;
//constante
const int Nmax= (int) 1e5+1;
//variabile
int elemente,intrebari;
int rmq[18][Nmax];
int log[Nmax];
int left,right;
int main(void)
{
in=fopen("rmq.in", "rt");
out=fopen("rmq.out", "wt");
fscanf(in, "%d%d", &elemente, &intrebari);
for(int i=1 ; i<=elemente ; ++i)
fscanf(in, "%d", &rmq[0][i]);
for(int i=2 ; i<=elemente ; ++i)
log[i]=log[i/2]+1;
for(int i=1 ; (1<<i)<=elemente ; ++i)
for(int j=1 ; j<=elemente-(1<<i)+1 ; ++j)
rmq[i][j] = min(rmq[i-1][j], rmq[i-1][j+ (1<<(i-1))]);
while(intrebari--)
{
fscanf(in, "%d%d", &left, &right);
int line= log[right-left+1];
fprintf(out,"%d\n",min(rmq[line][left], rmq[line][right- (1<<line)+1]));
}
fclose(in);
fclose(out);
return 0;
}