Cod sursa(job #886614)

Utilizator Impaler_009Mihai Nitu Impaler_009 Data 23 februarie 2013 00:38:00
Problema Range minimum query Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");

int *a[100001],v[100001]; int n;

void calculate (int x)
{
    a[x]=new int [n-x+2];
    a[x][1]=v[x];
    for (int i=2;i<=n-x+1;i++)
    {
        if (a[x][i-1]<v[x+i-1]) a[x][i]=a[x][i-1];
        else a[x][i]=v[x+i-1];
    }
}

int main()
{
    int x,y,m,i;
    fin>>n>>m;
    for (i=1;i<=n;i++) fin>>v[i];
    for (i=1;i<=m;i++)
    {
        fin>>x>>y;
        if (a[x]==NULL) calculate (x);
        fout<<a[x][y-x+1]<<"\n";
    }
}