Cod sursa(job #1962179)
| Utilizator | Data | 11 aprilie 2017 16:54:53 | |
|---|---|---|---|
| Problema | Range minimum query | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.55 kb |
#include <fstream>
#include <math.h>
#define inf 100001
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n,l;
int m[100001][18];
int main()
{ fin>>n>>l;
int i,j,x,y,sol;
for(i=1;i<=n;++i)
fin>>m[i][0];
for(j=1;(1<<j)<=n;++j)
for(i=1;i+(1<<j)-1<=n;++i)
m[i][j]=min(m[i][j-1],m[i+(1<<(j-1))][j-1]);
for(i=1;i<=l;++i)
{ fin>>x>>y;
j=log2(y-x+1);
sol=inf;
sol=min(m[x][j],m[y-(1<<j)+1][j]);
fout<<sol<<"\n";
}
return 0;
}
