Pagini recente » Cod sursa (job #2524025) | Cod sursa (job #593222) | Cod sursa (job #1625760) | Cod sursa (job #9261) | Cod sursa (job #303545)
Cod sursa(job #303545)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int n,m,a[100005],x,y,v[100005][20],i,j;
int main ()
{
in>>n>>m;
for(i=0;i<n;i++)
{
in>>a[i];
v[i][0]=i;
}
i=0;
for(j=1;1<<j<=n;j++)
for(i=0;i+(1<<j)-1<n;i++)
{
if(a[v[i][j-1]]<a[v[i+(1<<(j-1))][j-1]])
v[i][j]=v[i][j-1];
else
v[i][j]=v[i+(1<<(j-1))][j-1];
}
for(i=1;i<=m;i++)
{
in>>x>>y;
--x;
--y;
if(y==x)
out<<a[x]<<"\n";
else
{
int c=1;
int cont=0;
if(c<y)
{
do
{
c*=2;
cont++;
}
while(c<y-x+1);
c/=2;
--cont;
}
if(a[v[x][cont]]<a[v[y-c+1][cont]])
out<<a[v[x][cont]]<<"\n";
else
out<<a[v[y-c+1][cont]]<<"\n";
}
}
return 0;
}