Cod sursa(job #2124802)

Utilizator lorena1999Marginean Lorena lorena1999 Data 7 februarie 2018 16:48:42
Problema Range minimum query Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <fstream>
#include <climits>
#include <cmath>
#define inf INT_MAX

using namespace std;

ifstream f("rmq.in");
ofstream g("rmq.out");

int n, q, d[23][100001];

int main()
    {
        f>>n>>q;
        for(int i=1; i<=n; i++)
            f>>d[0][i];
        int m=log2(n);
        int k=1;
        for(int i=1; i<=m; i++)
            {
                for(int j=1; j<=n; j++)
                    d[i][j]=min(d[i-1][j], d[i-1][j+k]);
                k*=2;
            }
        int a, b;
        for(int i=1; i<=q; i++)
        {
            f>>a>>b;
            int t=log2(b-a+1);
            int tt=(1<<t);
            g<<min(d[t][a], d[t][b-tt+1])<<'\n';
        }
    }