Cod sursa(job #1045097)

Utilizator sebinechitasebi nechita sebinechita Data 30 noiembrie 2013 21:22:39
Problema Range minimum query Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
//nu ii frumos sa te uiti pe sursele altora:))...hotule....nu o sti face singur?:))
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
#define MAX 100100
int n, m, i,a[MAX][17],log[MAX],s[MAX], j, x, y;
int main()
{
    fin>>n>>m;
    for(i=1;i<=n;i++)
    {
        fin>>s[i];
    }
    log[0]=-1;
    for(i=1;i<=n;i++)
    {
        log[i]=log[i/2]+1;
    }
    for(i=1;i<=n;i++)
        a[i][0]=s[i];
    for(j=1;(1<<j)<=n;j++)
    {
        for(i=1;i<=n;i++)
        {
            a[i][j]=min(a[i][j-1], a[i+(1<<(j-1))][j-1]);
        }
    }

    for(i=1;i<=m;i++)
    {
        fin>>x>>y;
        fout<<min(a[x][log[y-x+1]], a[y-(1<<log[y-x+1])+1][log[y-x+1]])<<"\n";
    }
}