Cod sursa(job #3315393)
| Utilizator | Data | 14 octombrie 2025 08:37:57 | |
|---|---|---|---|
| Problema | Range minimum query | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.45 kb |
#include<fstream>
#include<cmath>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int b[100000][18];
int main()
{
int m,n;
cin>>n>>m;
for(int i=0;i<n;cin>>b[i++][0]);
for(int j=1,k;k=1<<j,k<=n;++j)
for(int i=0;i+k-1<n;b[i][j]=min(b[i][j-1],b[i+(k>>1)][j-1]),++i);
for(;m--;) {
int i,j,k;
cin>>i>>j,k=log2(j-i+1),cout<<min(b[i-1][k],b[j-(1<<k)][k])<<'\n';
}
return 0;
}
