Cod sursa(job #3132746)

Utilizator corinarobuRobu Corina corinarobu Data 23 mai 2023 19:04:30
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <fstream>
#include <cmath>
ifstream f("rmq.in");
ofstream g("rmq.out");
int r[100005][18],i,j,n,m,p,st,dr,lung,pt=1, l = 17;

int main()
{
    f >> n >> m;
    for(i = 1; i <= n; i++){
        f>>r[i][0];
    }
    for(p = 1; p <= l; p++){
        for(i = 1; i <= n; i++){
            if(i+put <= n)  r[i][p] = min(r[i][p-1],r[i+put][p-1]);
        }
        put <<= 1;
    }

     i = 1;
     while(i <= m){
        f>>left>>right;
        pt = 1, p = 0;
        lung = right - left + 1;
        while(pt <= lung){
            p++;
            pt <<= 1;
        }
        p--;
        pt >>= 1;
        g << min(r[left][p],r[right-pt+1][p]) << endl;
    i++;
    }

  return 0;
}