Pagini recente » Cod sursa (job #347182) | Cod sursa (job #2935319) | Cod sursa (job #3131327) | Cod sursa (job #1956553) | Cod sursa (job #982407)
Cod sursa(job #982407)
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int a[1000001][18]={};
int main()
{
int n,m;
f>>n>>m;
for(int i=1;i<=n;i++)
f>>a[i][0];
for(int j=1;(1<<j)<=n;j++)
for(int i=1;i<=n;i++)
if(i+(1<<j)-1<=n)
a[i][j]=a[i][j-1]<a[i+(1<<j)-1][j-1] ? a[i][j-1] : a[i+(1<<j)-1][j-1] ;
else
a[i][j]=a[i][j-1]<a[n][j-1] ? a[i][j-1] : a[n][j-1];
for(int t=1;t<=m;t++){
int x,y;
f>>x>>y;
int k=(int)log(double(y-x+1))/log(2.0);
g<<(a[x][k] < a[x+k][k] ? a[x][k] : a[x+k][k])<<'\n';
}
return 0;
}