Cod sursa(job #2837648)

Utilizator answarIonascu Andrei answar Data 22 ianuarie 2022 12:55:36
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <fstream>
#define INF 1000000000
using namespace std;
ifstream cin "rmq.in");
ofstream cout("rmq.out");
int v[17][100010];
int x[100010];
int n,m,i,j,st,dr,minim,p,poz,len;
int main () {
    cin>>n>>m;
    for (i=1;i<=n;i++) {
        cin>>v[0][i];
    }
    for (p=1;(1<<p)<= n;p++) {
        for (i=1;i<=n;i++) {
            v[p][i]=v[p-1][i];
            j=i+(1<<(p-1));
            if (j<=n&&v[p][i]>v[p-1][j]) {
                v[p][i]=v[p-1][j];
            }
        }
    }
    x[1]=0;
    for (i=2;i<=n;i++)
        x[i]=1+x[i/2];
    for (i=1;i<=m;i++) {
        fin>>st>>dr;
        poz=x[dr-st+1];
        len = (1<<e);
        cout<<min(v[poz][st],v[poz][dr-len+1])<<"\n";
    }