Cod sursa(job #3122555)
Utilizator | Data | 19 aprilie 2023 16:20:18 | |
---|---|---|---|
Problema | Range minimum query | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.37 kb |
#include<bits/stdc++.h>
using namespace std;
ifstream F("rmq.in");
ofstream G("rmq.out");
int n,i,j,k,b[100000][18];
int main()
{
for(F>>n>>j;i<n;F>>b[i++][0]);
for(j=1;(1<<j)<=n;++j)
for(i=0;i+(1<<j)-1<n;b[i][j]=min(b[i][j-1],b[i+(1<<(j-1))][j-1]),++i);
for(;F>>i>>j;k=(int)log2(j-i+1),G<<min(b[i-1][k],b[j-(1<<k)][k])<<'\n');
return 0;
}