Cod sursa(job #3000195)

Utilizator claudiuhamciucHamciuc Claudiud claudiuhamciuc Data 12 martie 2023 10:19:59
Problema Range minimum query Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n,m,i,v[100002],x,y,blocks[int(sqrt(100002))+2],divlen;
int main()
{
    for(i=1;i<=int(sqrt(100002))+1;i++)
        blocks[i]=100002;
    fin>>n>>m;
    divlen=int(sqrt(n));
    for(i=1;i<=n;i++){
        fin>>v[i];
        blocks[(i-1)/divlen+1]=min(blocks[(i-1)/divlen+1],v[i]);
    }
    for(int c=1;c<=m;c++){
        fin>>x>>y;
        int minim=100002;
        for(i=x;i<=y;i++)
        {
            if((i-1)%divlen==0){
                minim=min(minim,blocks[(i-1)/divlen+1]);
                i+=(divlen-1);
            }
            else
                minim=min(minim,v[i]);
        }
        fout<<minim<<'\n';
    }
    return 0;
}