Pagini recente » Cod sursa (job #527875) | Cod sursa (job #1785415) | Cod sursa (job #458694) | Cod sursa (job #1830322) | Cod sursa (job #1116752)
#include<stdio.h>
#include<algorithm>
using namespace std;
FILE *in,*out;
//definitii
//constante
const int Nmax=(int) 1e5+1;
//variabile
int elemente,intrebari;
int left,right;
int rmq[18][Nmax];
int lg[Nmax];
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;
}