Cod sursa(job #1022044)

Utilizator Eby7Elena Obreja Eby7 Data 4 noiembrie 2013 18:06:56
Problema Range minimum query Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include<fstream>
#include<algorithm>
#define N 100001
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int rmq[20][N],lg[N];
int n,m,i,k,l,x,y;
int main()
{
    f>>n>>m>>rmq[0][1];
    for(i=2;i<=n;i++)
    {
        lg[i]=lg[i>>1]+1;
        f>>rmq[0][i];
    }
    for(k=1;(1<<k)<=n;k++)
    {
        for(i=1;i+(1<<k)-1<=n;i++)
        {
            l=1<<(k-1);
            rmq[k][i]=min(rmq[k-1][i],rmq[k-1][i+l]);
        }
    }
    for(;m;m--)
    {
        f>>x>>y;
        l=lg[y-x+1];
        y=y-x+1-(1<<l);
        g<<min(rmq[l][x],rmq[l][x+y])<<"\n";
    }
}