Pagini recente » Cod sursa (job #1555712) | Cod sursa (job #2453414) | Cod sursa (job #3163864) | Cod sursa (job #401890) | Cod sursa (job #2686771)
#include <iostream>
#include <fstream>
#define PUTERE_MAXIMA 17
using namespace std;
ifstream fi("rmq.in");
ofstream fo("rmq.out");
int n;
int m;
int mat[20][100005];
void contruire_matrice()
{
for(int i=1;(1<<i)<=n;i++)
{
int pw=(1<<i);
for(int j=1;j+pw-1<=n;j++)
mat[i][j]=min(mat[i-1][j],mat[i-1][j+pw/2]);
}
}
int get_answear(int a ,int b)
{
for(int i=PUTERE_MAXIMA;i>=0;i--)
if(b-a+1>=(1<<i))
return min(mat[i][a],mat[i][b-(1<<i)+1]);
}
int main()
{
fi>>n>>m;
int L;
for(int i=1;i<=n;i++)
{
fi>>L;
mat[0][i]=L;
}
contruire_matrice();
int x,y;
while(m!=0)
{
fi>>x>>y;
fo<<get_answear(x,y)<<endl;
m--;
}
return 0;
}