Pagini recente » Cod sursa (job #817763) | Cod sursa (job #2325018) | Cod sursa (job #1619990) | Cod sursa (job #1931162) | Cod sursa (job #2564626)
#include <fstream>
#define N 100002
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int rmq[17][N],log[N];
int main()
{
int n,m,a,b;
f>>n>>m;
log[0]=-1;
for(int j=1;j<=n;++j) f>>rmq[0][j],log[j]=1+log[j/2];
int p=1;
for(int i=1;i<=log[n];++i)
{
for(int j=1;j+p<=n;++j)
rmq[i][j]=min(rmq[i-1][j],rmq[i-1][j+p]);
p*=2;
}
int lin,dif,val;
while(m--)
{
f>>a>>b;
if(a>b) swap(a,b);
dif=b-a+1;
lin=log[dif];
p=(1<<lin);
val=min(rmq[lin][a],rmq[lin][b-p+1]);
g<<val<<'\n';
}
f.close();
g.close();
return 0;
}