Cod sursa(job #2904461)

Utilizator florina15Florina florina15 Data 17 mai 2022 23:41:05
Problema Range minimum query Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <iostream>
#include<fstream>

using namespace std;

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

int a[100001][20];

int main()
{
    int n, m, i, j, k, x, y;

    f>>n>>m;

    for(i=1; i<=n; i++)
        f>>a[i][0];

    j = 1;
    k = 1;
    while(j<=n)
    {
        for(i=1; i+j-1<=n; i++)
            a[i][k]=min(a[i][k-1],a[i+j][k-1]);
        j=j<<1;
        k++;
    }

    i = 1;

    while(i<=m)
    {
        f>>x>>y;

        if(x>y)
            swap(x,y);

        j = y - x + 1;

        int p = 1;

        k = 0;

        while(p <= j)
        {
            p = p<<1;
            k++;
        }

        p = p>>1;

        k--;

        g<<min(a[x][k],a[y-p+1][k])<<endl;

        i++;
    }
}