Cod sursa(job #1534569)

Utilizator BaweeLazar Vlad Bawee Data 23 noiembrie 2015 20:06:12
Problema Range minimum query Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>

using namespace std;

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

int A[100001];
int M[20001][20001];

int N,K;

void preprocesare()
{
    int i,j;
    for(i = 1 ; i <= N; i++)
        M[i][i] = i;

    for(i = 1; i <= N; i++)
        for(j = i + 1; j <= N; j++)
            if(A[ M[i][j - 1] ] < A[j])
                M[i][j] = M[i][j - 1];
            else
                M[i][j] = j;
}

int main()
{
    int x,y;

    f >> N >> K;
    for(int i = 1; i <= N; i++)
        f >> A[i];

    preprocesare();

    for(int i = 1; i <= K; i++)
    {
        f >> x >> y;
        if(y <= 20000)
            g << A[ M[x][y] ]  << "\n";
        else
            g << 0 << "\n";
    }

     /*for(int i = 1; i <= N; i++)
     {
        for(int j = 1; j <= N; j++)
            g << M[i][j] << " ";
        g << "\n";
     }*/
    return 0;
}