Cod sursa(job #2836973)
Utilizator | Data | 21 ianuarie 2022 12:35:55 | |
---|---|---|---|
Problema | Range minimum query | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.42 kb |
#include <bits/stdc++.h>
using namespace std;ifstream fin("rmq.in");ofstream fout("rmq.out");int rmq[100005][18],n,q,x,y;int main(){fin>>n>>q;for(int i=1;i<=n;i++)fin>>rmq[i][0];for(int j=1;(1<<j)<=n;j++)for(int i=1;i<=n;i++){rmq[i][j]=rmq[i][j-1];if(i+(1<<(j-1))<=n)rmq[i][j]=min(rmq[i][j],rmq[i+(1<<(j-1))][j-1]);}int x,y,z;while(q--){fin>>x>>y;z=(int)log2(y-x+1);fout<<min(rmq[x][z],rmq[y-(1<<z)+1][z])<<'\n';}return 0;}