Cod sursa(job #2179395)

Utilizator andrei1299Ghiorghe Andrei Alexandru andrei1299 Data 20 martie 2018 10:38:07
Problema Range minimum query Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int n,m,A[100005];
vector <int> M[100005];
void RMQ()
{
    int i,j;
    for(i=0;i<n;i++)
        for(j=0;j<n;j++)
            M[i].push_back(0);
    for(i=0;i<n;i++)
        M[i][i]=i;
    for(i=0;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 i,x,y;

    ifstream fin("rmq.in");
    ofstream fout("rmq.out");
    fin>>n>>m;
    for(i=0;i<n;i++)
        fin>>A[i];
    RMQ();
    for(i=0;i<m;i++)
    {
        fin>>x>>y;
        fout<<A[M[x-1][y-1]]<<"\n";
    }
    fin.close();
    fout.close();
    return 0;
}