Pagini recente » Cod sursa (job #1354658) | Cod sursa (job #1398033) | Cod sursa (job #2425042) | Cod sursa (job #1692618) | Cod sursa (job #2204363)
#include <stdio.h>
#include <math.h>
unsigned n,m,a[100005][18];
/*
int l2(int i)
{
int j=0;
while(i>1){
j++;
i=i/2;
}
return j;
}
*/
int main()
{
unsigned i,j,k,p,q;
FILE *f,*g;
f=fopen("rmq.in","r");
g=fopen("rmq.out","w");
fscanf(f,"%d%d",&n,&m);
for (i=1;i<=n;i++)
fscanf(f,"%d",&a[i][0]);
for(p=1,q=1;q<=n;p++,q*=2)
for(i=1;i<=n-q;i++)
if(a[i][p-1]<a[i+1][p-1])
a[i][p]=a[i][p-1];
else
a[i][p]=a[i+1][p-1];
for(k=1;k<=m;k++)
{
fscanf(f,"%d%d",&i,&j);
p=log2(j-i)+1;q=1<<(p-1);
if(i==j)
fprintf(g,"%d\n",a[i][0]);
else
fprintf(g,"%d\n",a[i][p]<a[j-q][p]?a[i][p]:a[j-q][p]);
}
}