Cod sursa(job #1240003)

Utilizator cristibogdanPatrascu Cristian cristibogdan Data 10 octombrie 2014 09:25:34
Problema Range minimum query Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <fstream>
 
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int a[18][100001],i,n,t,j,m,v[100001],x,y,q;
int min (int a,int b){
    if(a>b)
        return b;
        return a;}
 
 
int main()
{f>>n>>m;
    for(i=1;i<=n;i++)
        f>>a[0][i];
for(i=1;i<=n;i++)
    {t=i;
        while(t>=2){
            t=t/2;
            v[i]++;}
    }
for(i=1;i<=v[n];i++)
    for(j=1;j+(1<<i)-1<=n;j++){
            a[i][j]=min(a[i-1][j+(1<<(i-1))],a[i-1][j]);
    }
for(i=1;i<=m;i++){
	f>>x>>y;
	q=v[y-x+1];
	g<<min(a[q][x],a[q][y-(1<<q)+1])<<'\n';}
    return 0;
}