Cod sursa(job #1687401)

Utilizator minut1Baies Cosmin minut1 Data 12 aprilie 2016 20:39:47
Problema Plantatie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>

using namespace std;

ifstream cin("rmq.in");
ofstream cout("rmq.out");

int log[100005];
int r[100005][18];
int v[100005];

void matrice(int v[ ],int n)
{
    int i,j;
    for(i=1 ; i<=n ; i++)
    {
        r[i][0]=v[i];
        for(j=1 ; (1<<j) <= i ; j++)
            r[i][j]=min(r[i][j-1],r[i-(1<<(j-1))][j-1]);
    }
}

void logartim(int log[ ],int n)
{
    int i;
    log[1]=0;
    for(i=2; i<=n; i++)
        log[i]=1+log[i/2];
}

int main()
{
    int n,m,i,x,y,l;
    cin>>n>>m;
    for(i=1 ; i<=n ; i++)
        cin>>v[i];
    matrice(v,n);
    logartim(log,n);
    for(i=1 ; i<=m ; i++)
    {
        cin>>x>>y;
        l=log[y-x+1];
        cout<<min(r[y][l],r[x+(1<<l)-1][l])<<"\n";
    }
    cin.close();
    cout.close();
    return 0;
}