Cod sursa(job #3331247)

Utilizator vladinfo_Grecu Vlad vladinfo_ Data 26 decembrie 2025 00:57:53
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <bits/stdc++.h>
/// Template Dutzu
#define fast ios_base::sync_with_stdio(false);cin.tie(0);
using namespace std;

ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n;
int v[100001],bat[1001];
int main()
{
    fast
    int m;
    fin>>n>>m;
    for (int i=1;i<=n;i++)
        fin>>v[i];
    int lg=sqrt(n);
    bat[0]=INT_MAX;
    for (int i=1;i<=lg;i++)
    {
        int minim=INT_MAX;
        int aux=min(i*lg,n);
        for (int j=(i-1)*lg+1;j<=aux;j++)
            minim=min(minim,v[j]);
        bat[i]=minim;
    }
    for (int l=1;l<=m;l++)
    {
        int a,b;
        fin>>a>>b;
        int st,dr;
        st=a/lg+1;
        dr=b/lg;
        int rez=INT_MAX;
        if (st<=dr){
        for (int i=st;i<=dr;i++)
            rez=min(rez,bat[i]);
        for (int i=a;i<=st*lg;i++)
            rez=min(rez,v[i]);
        for (int i=dr*lg+1;i<=b;i++)
            rez=min(rez,v[i]);
        }
        else
            for (int i=a;i<=b;i++)
                rez=min(rez,v[i]);
        fout<<rez<<'\n';
    }
    return 0;
}