Pagini recente » Cod sursa (job #997954) | Cod sursa (job #2554982) | Cod sursa (job #2376457) | Cod sursa (job #2919111) | Cod sursa (job #2292683)
#include <fstream>
#define N 100000
using namespace std;
int logaritm[N+5],a[N+5],RMQ[N+5][20];
int main()
{
ifstream f("rmq.in");
ofstream g("rmq.out");
int n,Q;
f>>n>>Q;
for(int i=1;i<=n;i++)
{
f>>a[i];
RMQ[i][0]=a[i];
}
for(int i=2;i<=n;i++)
logaritm[i]=logaritm[i/2]+1;
for(int j=1;(1<<j)<=n;j++)
for(int i=1;i<=n+1-(1<<j);i++)
RMQ[i][j]=min(RMQ[i][j-1],RMQ[i+(1<<(j-1))][j-1]);
for(int q=1;q<=Q;q++)
{
int st,dr;
f>>st>>dr;
int dist=dr-st+1;
int log=logaritm[dist];
int d=dist-(1<<log);
g<<min(RMQ[st][log],RMQ[st+d][log])<<"\n";
}
return 0;
}