Cod sursa(job #177802)

Utilizator me_andyAvramescu Andrei me_andy Data 13 aprilie 2008 16:53:05
Problema Range minimum query Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.5 kb
#include<fstream>

#define max 1001

using namespace std;
 ifstream f("rmq.in");
 ofstream g("rmq.out");
 int rmq[18][max],lg[max],x,y,i,j,k,a,b;

int main()
{
 f>>x;
 f>>y;
 f>>a;
 rmq[0][1]=a;
 for(i=2;i<=x;i++)
 {
  f>>rmq[0][i];
  lg[i]=lg[i/2]+1;
 }
 for(i=1;i<=lg[x];i++)
  for(j=1;j+(1<<i)-1<=x;j++)
    rmq[i][j]=min(rmq[i-1][j],rmq[i-1][j+(1<<(i-1))]);
 for(i=1;i<=y;i++)
 {
  f>>a>>b;
  k=lg[b-a+1];
  g<<min(rmq[k][a],rmq[k][b-(1<<k)+1])<<"\n";
 }
return 0;
}