Pagini recente » Cod sursa (job #443491) | Cod sursa (job #1133231) | Cod sursa (job #1543531) | Cod sursa (job #2947545) | Cod sursa (job #1369376)
#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=0; i<=logaritm[N]; i++)
//{
// for(int j=1; j<=/*N-(1<<(i-1))*/; j++)
// g << v[i][j] << ' ';
// g << '\n';
//}
for(int i=1; i<=M; i++)
{
f >> x >> y;
linie=logaritm[y-x];
g << min(v[linie][x],v[linie][y-(1<<linie)+1]) << '\n';
}
return 0;
}