Pagini recente » Cod sursa (job #630939) | Cod sursa (job #2824926) | Cod sursa (job #1320627) | Cod sursa (job #2758483) | Cod sursa (job #982421)
Cod sursa(job #982421)
#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[y-((1<<k)-1)][k] ? a[x][k] : a[y-((1<<k)-1)][k])<<'\n';
}
return 0;
}