Cod sursa(job #3330565)

Utilizator sebyx25sebi m sebyx25 Data 20 decembrie 2025 10:44:19
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
//#include <algorithm>

#define cin fin
#define cout fout

using namespace std;

ifstream fin("rmq.in");
ofstream fout("rmq.out");

int n,m;
vector<vector<int>>matrice;
//vector<int>nu;

int min1(int a,int b){
    return a<b ? a:b; 
}

int main(){
    cin>>n>>m;
    matrice=vector<vector<int>>(n+1,vector<int>(n+1));
    //nu=vector<int>(n+1);
    for(int i=1;i<=n;i++){
        cin>>matrice[0][i];
    }
    for(int k=1;(1<<k)<=n;k++){
      for( int i=1;i+(1<<k)-1<=n;i++){
        int j=i+(1<<(k-1));
        matrice[k][i]=min(matrice[k-1][i],matrice[k-1][j]);
      }
    }
    for(int i=1;i<=m;i++){
        int x,y;
        cin>>x>>y;
        double r=log(y-x+1);
        if(r==int(r)){
          cout<<matrice[r][2]<<endl;
        }
        else{
          int t=int(r),mi=matrice[t][2];
          while(x!=y+1){
            mi=min1(matrice[0][x],mi);
            x++;
          }
          cout<<mi<<endl;
        }
    }
    //vreau_acasa();
    return 0;
}