Cod sursa(job #2529390)

Utilizator CalinachoGherlan Calin Paul Calinacho Data 23 ianuarie 2020 12:52:43
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.46 kb
#include<fstream>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
int rmq[100005][18];

int main(){
	ifstream in("rmq.in");
	ofstream out("rmq.out");
	int n,m,k,o,p;
	in>>n>>m;
	for(int i=1;i<=n;i++){
		in>>rmq[i][0];
	}
	for(int j=1;(1<<j)<=n;j++){
		for(int i=1;i+(1<<j)-1<=n;i++){
			rmq[i][j]=min(rmq[i][j-1],rmq[i+(1<<(j-1))][j-1]);
		}  
	}
	while(m--){
	in>>o>>p;
	k=log2(p-o+1);
	out<<min(rmq[o][k],rmq[1+p-(1<<k)][k])<<"\n";
	}
	
}