Pagini recente » Cod sursa (job #1599388) | Cod sursa (job #3128690) | Cod sursa (job #929700) | Istoria paginii runda/cnrv_x1/clasament | Cod sursa (job #2485934)
#include <fstream>
using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
int n,t,m[30][100001],l2[100001],x,y,l;
int main()
{
fin>>n>>t;
for(int i=1; i<=n; ++i)
fin>>m[0][i];
l2[0]=l2[1]=0;
for(int i=2; i<=n; ++i)
l2[i]=l2[i>>1]+1;
for(int i=1; i<=l2[n]; ++i)
for(int j=1; j+(1<<(i-1))<=n; ++j)
m[i][j]=min(m[i-1][j],m[i-1][j+(1<<(i-1))]);
while(t--)
{
fin>>x>>y;
l=l2[y-x+1];
fout<<min(m[l][x],m[l][y-(1<<l)+1])<<'\n';
}
return 0;
}