Pagini recente » Cod sursa (job #168103) | Cod sursa (job #2087897) | Cod sursa (job #1648204) | Cod sursa (job #254817) | Cod sursa (job #1111916)
#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 lg[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)
lg[i]=lg[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= lg[right-left+1];
fprintf(out,"%d\n",min(rmq[line][left], rmq[line][right- (1<<line)+1]));
}
fclose(in);
fclose(out);
return 0;
}