Cod sursa(job #2559116)

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

using namespace std;

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

const int NMAX = 100005;
const int INF = (int)1e18;

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]=INF;
    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';
        g.flush();
        M--;
    }
    f.close();
    g.close();
    return 0;
}