Cod sursa(job #387475)

Utilizator APOCALYPTODragos APOCALYPTO Data 27 ianuarie 2010 19:05:49
Problema Range minimum query Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
#define max(x,y) ((x)>(y)?(x):(y))
ofstream fout("rmq.out");
long lg[100005],(*RMQ)[20]=new long[100005][20],m,n,i,j,v[100005];
int main()
{
    ifstream fin("rmq.in");
    fin>>n>>m;
    for(i=1;i<=n;i++)
    fin>>RMQ[i][0];
    lg[1]=0;
    for(i=2;i<=n;i++)
    lg[i]=lg[i/2]+1;

     for(i=1;i<=m;i++)
      {fin>>i>>j;
      fout<<max(RMQ[i][lg[j-i+1]],RMQ[j-1<<lg[j-i+1]+1][lg[j-i+1]]);
      }
      fin.close();
      fout.close();

      return 0;
}