Cod sursa(job #2901124)

Utilizator mirceaspPetcu Mircea mirceasp Data 13 mai 2022 00:42:37
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#include <vector>
#include <cmath>
#define size 100000
#define logsize 17
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
long long n,m,op,j,v[100001],mat[size][logsize];
long long minim(long long st,long long dr)
{
    long long s = dr-st+1,nr = 0;
    nr = (long long )log2(s);
    return min(mat[st][nr],mat[dr- (long long )pow(2,nr)+1][nr]);
}
int main()
{
    f>>n>>m;
    long long i;
    for(i = 0;i<n;i++)
    {
        f>>v[i];
        mat[i][0] = v[i];

    }
    for(j = 1;j<=logsize;j++)
        for(i = 0;i+ (long long ) pow(2,j)-1<n;i++)
            mat[i][j] = min(mat[i][j-1],mat[i+ (long long) pow(2,(j-1))][j-1]);
    long long a,b;
    for(i = 0;i<m;i++)
    {
        f>>a>>b;
        g<<minim(a-1,b-1)<<'\n';
    }
    f.close();g.close();
}