Cod sursa(job #2559110)

Utilizator TzigCurta Tudor Tzig Data 26 februarie 2020 23:35:25
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <fstream>

using namespace std;

ifstream f("rmq.in");
ofstream g("rmq.out");

const int NMAX = 100005;

int N,M;
int X[NMAX];
int Rez[NMAX][NMAX];

int main()
{
    f>>N>>M;
    for(int i=1;i<=N;i++){
        f>>X[i];
        Rez[i][i]=i;
    }
    X[0]=(int)1e18;
    for(int k=1;k<=N;k++){
        for(int i=1;i<=N-k;i++){
            int j=i+k;
            if(X[Rez[i][j-1]]>X[Rez[i+1][j]]){
                Rez[i][j]=Rez[i+1][j];
            }else{
                Rez[i][j]=Rez[i][j-1];
            }
        }
    }
    while(M){
        int i,j;
        f>>i>>j;
        g<<X[Rez[i][j]]<<'\n';
        M--;
    }
    f.close();
    g.close();
    return 0;
}