Cod sursa(job #3335094)

Utilizator 1gbr1Gabara 1gbr1 Data 21 ianuarie 2026 16:57:54
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <vector>
#include <fstream>
#include <bitset>
#include <algorithm>
#include <queue>
using namespace std;

ifstream fin("rmq.in");
ofstream fout("rmq.out");
int mat[100004][17];
int put[100005];
int main()
{
    int n,m;
    fin>>n>>m;
    for (int i=1; i<=n; i++)
        fin>>mat[i][0];
    put[1]=0;
    for (int i=2; i<=n; i++)
        put[i]=put[i/2]+1;
    for (int j=1; j<=17; j++)
        for (int i=1; i+(1<<j)-1<=n; i++)
            mat[i][j]=min(mat[i][j-1],mat[i+(1<<(j-1))][j-1]);
    while (m--) {
        int x,y;
        fin>>x>>y;
        int lg=y-x+1;
        int val=put[lg];
        fout<<min(mat[x][val],mat[y-(1<<val)+1][val])<<"\n";
    }
    return 0;
}
// num=10,/=11,*=12,-=13,+=14,enter=15,.=16,