Cod sursa(job #2284605)

Utilizator DumitresculEDumitrescul Eduard DumitresculE Data 17 noiembrie 2018 11:54:56
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int rmq[20][100004];
int main()
{
    int n,q,i,p2=1,j;
    f>>n>>q;
    for(i=1;i<=n;i++)
        f>>rmq[0][i];
    for(i=1;p2<=n;i++){
        for(j=1;j+p2<=n;j++)
            rmq[i][j]=min(rmq[i-1][j],rmq[i-1][j+p2]);
        p2*=2;
    }
//    for(i=1;i<=5;i++){
//        for(j=1;j<=n;j++)
//            g<<rmq[i][j]<<" ";
//        g<<"\n";
//    }
//
    int a,b,lung;
    for(i=1;i<=q;i++){
        f>>a>>b;
        lung=b-a+1;p2=0;
        while(lung>1){
            p2++;
            lung=(lung>>1);
        }
        g<<min(rmq[p2][a],rmq[p2][b-(1<<p2)+1])<<"\n";
    }
    return 0;
}