Pagini recente » Cod sursa (job #1407531) | Cod sursa (job #797376) | Cod sursa (job #498799) | Cod sursa (job #1749184) | Cod sursa (job #966716)
Cod sursa(job #966716)
#include <iostream>
#include <fstream>
#include <cmath>
#include <vector>
#include <queue>
#include <deque>
#include <list>
#include <ctime>
#include <string>
#include <algorithm>
using namespace std;
ifstream ff("rmq.in");
ofstream gg("rmq.out");
#define max 100001
int n, m, rr[max][18];
void rmq(){
for(int j=1;(1<<j)<=n;j++)
for(int i=1;i+(1<<(j-1))<=n;i++)
rr[i][j]=min(rr[i][j-1], rr[i+(1<<(j-1))][j-1]);
}
int main(){
int x, y, k;
ff >> n >> m;
for(int i=1;i<=n;i++) ff >> rr[i][0];
rmq();
for(int i=1;i<=m;i++){
ff >> x >> y;
k=log(y-x+1)/log(2);
gg << min(rr[x][k], rr[y-(1<<k)+1][k]) << "\n";
}
return 0;
}