Pagini recente » Cod sursa (job #2682170) | Cod sursa (job #2983544) | Cod sursa (job #647433) | Cod sursa (job #595005) | Cod sursa (job #1077053)
#include <fstream>
#define DIM 100010
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n, m, i, j, k, J, x, y, aux, d[DIM][20], p[DIM];
inline int minim(int x, int y){
return (x<y?x:y);
}
int main(){
f>>n>>m;
for(i=1; i<=n; i++)
f>>d[i][0];
for(i=2; i<DIM; i++)
p[i]=p[i/2]+1;
for(j=1; j<=p[n]; j++)
for(i=1; i<=n; i++)
{
J=j-1;
d[i][j]=d[i][J];
k=(1<<J);
if(i+k<=n && d[i+k][J]<d[i][j])
d[i][j]=d[i+k][J];
}
for(i=1; i<=m; i++)
{
f>>x>>y;
aux=p[y-x+1];
g<<minim(d[x][aux], d[y-(1<<aux)+1][aux])<<"\n";
}
return 0;
}