Cod sursa(job #2754598)

Utilizator oana_mireaMirea Oana-Gabriela oana_mirea Data 26 mai 2021 01:42:12
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.63 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int q[100002][17];

int query(int st, int dr){
    int lung, k=0;
    lung = dr-st+1;
    while((1<<(k+1)) <= lung)
    {
        k++;
    }
    return min(q[st][k], q[dr-(1<<k)+1][k]);

}
int main()
{
int n,m,st,dr,L;
f>>n>>m;
for(int i=1;i<=n;i++)
    f>>q[i][0];
L=int(log2(n));
for(int k=1;k<=L;k++)
    { int k1=1<<(k-1);
        for(int i=0; i+(1<<k)-1 <=n; i++)
    {
        q[i][k] = min(q[i][k-1], q[i+k1][k-1]);
    }}
for(int i=0; i<m;i++)
    {
   f>>st>>dr;
    g<<query(st,dr)<<'\n';}
    return 0;
}