Pagini recente » Cod sursa (job #2535259) | Cod sursa (job #2866345) | Cod sursa (job #278376) | Cod sursa (job #1575956) | Cod sursa (job #1378460)
#include <fstream>
#define min(x,y) ((x<y) ? x:y)
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
const int Nmax=100005;
int v[20][Nmax];
int logaritm[Nmax];
int N, M;
int x, y;
int linie;
int main ()
{
f >> N;
logaritm[1]=0;
for(int i=2; i<=N; i++) logaritm[i]=logaritm[i/2]+1;
//for(int i=1; i<=N; i++) g << logaritm[i] << ' ' ;
f >> M;
for(int i=1; i<=N; i++) f >> v[0][i];
for(int i=1; i<=logaritm[N]; i++)
for(int j=1; j<=N-(1<<(i-1)); j++)
v[i][j]=min(v[i-1][j], v[i-1][j+(1<<(i-1))]);
for(int i=1; i<=M; i++)
{
f >> x >> y;
linie=logaritm[y-x+1];
g << min(v[linie][x],v[linie][y-(1<<linie)+1]) << '\n';
}
return 0;
}