Cod sursa(job #2685841)

Utilizator Mihaela...Mihaela Zmeu Mihaela... Data 17 decembrie 2020 20:18:39
Problema Range minimum query Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include "bits/stdc++.h"
using namespace std;
int main (){
ifstream cin ("rmq.in");
ofstream cout ("rmq.out");
int n,m;
cin >> n >> m;
vector <int> v(n), ab;
int d = 100;
for ( int i = 0; i < n; i++){
	cin >>v[i];
	if ( i % d == 0){
		ab.push_back(v[i]);
	} else {
	if (ab[ab.size() -1 ] > v[i]){
		ab[ab.size() - 1 ]= v[i];
	}
	}
}
 for ( int i = 0 ; i < m; i++){
	int s = 10000001;
	int a,b;
	cin >> a >> b;
	a--;
	b--;
	int e = a;
	while( e % d != 0 && e <= b){
		if ( s > v[e]){
			s= v[e];
		}
   e++;
   	}
   	while ( e + d <= b){
		if ( s > ab[e/d]){
			s= ab [ e/d];
		}
		e+= d;
   	}
   	while ( e <= b){
		if (s > v[e]){
			s = v[e];
		}
		e++;
   	}
   	cout << s << '\n';
 }
 return 0;
}