Cod sursa(job #1451622)

Utilizator DjokValeriu Motroi Djok Data 17 iunie 2015 21:32:30
Problema Range minimum query Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include<bits/stdc++.h>
using namespace std;

int i,j,rmq[20][100005],n,q,x,y,Log[100005],lung;

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

  ios_base::sync_with_stdio(0);

  for(i=2;i<=100000;++i) Log[i]=Log[i/2]+1;

  cin>>n>>q;
  for(i=1;i<=n;++i) cin>>rmq[0][i];

  for(i=1;i<=Log[n];++i)
   for(j=1;(1<<i)<n;++j)
   rmq[i][j]=min(rmq[i-1][j],rmq[i-1][j+1<<(i-1)]);

  while(q--)
  {
    cin>>x>>y; lung=Log[y-x+1];
    cout<<min(rmq[lung][x],rmq[lung][y+1-(1<<lung)])<<'\n';
  }

 return 0;
}