Pagini recente » Cod sursa (job #2999782) | Cod sursa (job #1002125) | Cod sursa (job #2312581) | Cod sursa (job #307241) | Cod sursa (job #2786822)
#include <fstream>
#include <deque>
#include <algorithm>
#include <vector>
#include <queue>
#include <limits.h>
#include <bitset>
#define MOD 666013
using namespace std;
ifstream cin ("rmq.in");
ofstream cout ("rmq.out");
int n;
int v[100009];
struct nod
{
int val = 0 ;
};
nod t[200009] ;
void build()
{
for(int f = n + 1 ; f <= 2 * n ; f ++)
t[f].val = v[f - n] ;
for(int f = n ; f ; f --)
t[f].val = min(t[f * 2].val, t[f * 2 + 1].val) ;
}
int query(int st, int dr)
{
int rez = INT_MAX ;
dr ++ ; /// fara asta face in mod normal intervalul [sy, dr)
for (st += n, dr += n; st < dr; st /= 2, dr /= 2)
{
if(st % 2)rez = min(rez, t[st].val), st ++ ;
if(dr % 2)dr --, rez = min(t[dr].val, rez) ;
}
return rez ;
}
int main()
{
int q ;
cin >> n >> q ;
for(int f = 1 ; f <= n ; f ++)
cin >> v[f] ;
t[2 * n + 1].val = INT_MAX ;
build() ;
while(q --)
{
int st, dr ;
cin >> st >> dr ;
cout << query(st, dr) << '\n' ;
}
return 0;
}