Cod sursa(job #1529753)

Utilizator roxi22Roxi C. roxi22 Data 21 noiembrie 2015 11:03:44
Problema Range minimum query Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <fstream>

using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int a[100001],rmq[100][100001];
int log[100001];
int main()
{
    int i,n,j,m,x,y;
    fin>>n>>m;
    for(i=1; i<=n; i++)
    {
        fin>>a[i];
        rmq[0][i]=a[i];
    }
    for(i=1; (1<<i)<=n; i++)
        for(j=1; j+(1<<i)-1<=n; j++)
            rmq[i][j]=min(rmq[i-1][j],rmq[i-1][j+(1<<(i-1))]);

    log[1]=0;
    for(i=2; i<=n; i++)
        log[i]=log[i/2]+1;

    for(i=1; i<=m; i++)
    {
        in>>x>>y;
        in>>x>>y;
        j=log[y-x+1];
        out<<min(rmq[j][x],rmq[j][y-(1<<j)+1])<<'\n';
    }
    return 0;