Cod sursa(job #2647779)

Utilizator RazvanLazar2004Lazar Razvan Gabriel RazvanLazar2004 Data 6 septembrie 2020 13:53:24
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include<fstream>
#include<math.h>
using namespace std;
const long long int f=100005;
int main(){
    ifstream fin("rmq.in");
    ofstream fout("rmq.out");
    long long int n,t,a,b;
    fin>>n>>t;
    long long int v[f],d[20][f]={};
    for(long long int i=1;i<=n;i++){
        fin>>v[i];
        d[0][i]=v[i];
    }
    for(long long int i=1;i<=log2(n);i++){
        long long int g=pow(2,i);
        for(long long int j=1;j<=n-g+1;j++){
            d[i][j]=min(d[i-1][j],d[i-1][j+g/2]);
        }
    }
    for(long long int i=1;i<=t;i++){
        fin>>a>>b;
        long long int c=log2(b-a+1),k=b-pow(2,c)+1;
        fout<<min(d[c][a],d[c][k])<<"\n";
    }
}