Cod sursa(job #2541272)

Utilizator Vaida_Radu_AndreiVaida Radu Andrei Vaida_Radu_Andrei Data 8 februarie 2020 11:57:22
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.05 kb
#include <cstdio>
#include <climits>
#include <vector>
#define LengthMax 16*1024
#define LevelMax 14

using namespace std;

int log2[LengthMax],before[LengthMax][LevelMax]={INT_MAX},length;

int takeMin(int x,int y) {
    return (x<y)*(x-y)+y;
}

void read(int&q) {
    int i;
    scanf("%d%d",&length,&q);
    for(i=0;i<length;++i) {
        scanf("%d",&before[0][i]);
    }
}

void formLog2() {
    int i;
    for(i=2;i<length;++i) {
        log2[i]=log2[i>>1]+1;
    }
}

void formBefore() {
    int l,p,minim;
    for(l=1;l<log2[length];++l) {
        for(p=(1<<l),i=0;i+p<length;++i) {
            ;
        }
    }
}

void form() {
    formLog2();
    formBefore();
}

void solve() {
    int x1,x2,ind;
    scanf("%d%d",&x1,&x2);
    ind=log2[x2-x1];
    printf("%d\n",takeMin(before[ind][y],before[ind][x+(1<<ind)-1]));
}

int main()
{
    freopen("rmq.in","r",stdin);
    freopen("rmq.out","w",stdout);
    int q,iq;
    read(q);
    form();
    for(iq=0;iq<q;++iq) {
        solve();
    }
    return 0;
}