Pagini recente » Istoria paginii runda/simularea_lui_xutzu | Cod sursa (job #2912902) | Cod sursa (job #2404396) | Cod sursa (job #1706968) | Cod sursa (job #2601087)
#include<fstream>
#include<deque>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n,q,a,b,i,j;
int mat[18][100001],minim;
int main()
{
fin>>n>>q;
for(i=1; i<=n; i++)
fin>>mat[0][i];
for(i=1; i<=17; i++)
{
int p=(1<<i);
for(j=1;j<=n-p+1;j++)
{
mat[i][j]=min(mat[i-1][j],mat[i-1][j+p/2]);
}
}
for(i=1; i<=q; i++)
{
fin>>a>>b;
int p=0;
int st=0,dr=17;
while(st<=dr)
{
int mi=(st+dr)/2;
if((1<<mi)<=b-a)
{
st=mi+1;
p=mi;
}
else dr=mi-1;
}
fout<<min(mat[p][a],mat[p][b-(1<<p)+1])<<"\n";
}
}