Cod sursa(job #2758671)

Utilizator MateGMGozner Mate MateGM Data 11 iunie 2021 23:29:01
Problema Range minimum query Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <iostream>
#include  <fstream>

using namespace std;

ifstream be("rmq.in");
ofstream ki("rmq.out");

#define nmax 100002
#define lmax 18

long long rmq[lmax][nmax],a[nmax];
long long n,m;


void alakit()
{
    for(int i=0;i<n;i++)
        rmq[i][i]=i;
    for(int i=0;i<n;i++)
        for(int j=i+1;j<n;j++)
            if(a[rmq[i][j-1]]<a[j])
                rmq[i][j]=rmq[i][j-1];
            else
                rmq[i][j]=j;
}

void solve()
{
    alakit();
    for(int i=0;i<m;i++)
    {
        long long x,y;
        be>>x>>y;
        x--,y--;
        ki<<a[rmq[x][y]]<<'\n';

    }
}

int main()
{
    be>>n>>m;
    for(int i=0;i<n;i++)
        be>>a[i];
    solve();
    return 0;
}