Pagini recente » Cod sursa (job #418162) | Cod sursa (job #2716625) | Cod sursa (job #2091549) | Cod sursa (job #2113436)
#include <fstream>
#include <math.h>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int q[100005][30],p[30];
int main()
{
int n,m,i,j,x,y;
f>>n>>m;
for(i=1;i<=n;i++)
f>>q[i][0];
p[0]=1;
for(i=0;p[i]<=n;i++)
p[i+1]=p[i]*2;
for(j=1;p[j]<=n;j++)
for(i=1;i+p[j-1]<=n;i++)
{
q[i][j]=min(q[i][j-1],q[i+p[j-1]][j-1]);
}
for(i=1;i<=m;i++)
{
f>>x>>y;
for(j=0;p[j]<=y-x+1;j++);
j--;
if(j!=0)
g<<min(q[x][j],q[y-p[j]+1][j])<<'\n';
else
{
if(y-x==1)
g<<q[x][1]<<'\n';
else
g<<q[x][0]<<'\n';
}
}
return 0;
}