Pagini recente » Cod sursa (job #571213) | Cod sursa (job #842908) | Cod sursa (job #2749591) | Cod sursa (job #1724605) | Cod sursa (job #777821)
Cod sursa(job #777821)
/* Range Minimum Query*/
#include<fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n,m,i,j,v[100001],kmax;
int D[18][100001];
int x,y,k,rez;
int minimum(int a, int b)
{if(a<b)
return a;
return b;
}
int main()
{f>>n>>m;
for(i=1; i<=n; i++)
f>>D[0][i];
i=0;
while(1<<kmax<=n)
{i++;
for(j=1; j<=n-(1<<i)+1; j++)
D[i][j]=minimum(D[i-1][j],D[i-1][j+1<<(i-1)]);
kmax++;}
for(i=1; i<=m; i++)
{f>>x>>y;
while(1<<k<=y-x) k++;
k--;
rez=minimum(D[k][x],D[k][y-(1<<k)+1]);
g<<rez<<endl;
}
f.close();
g.close();
return 0;}