Cod sursa(job #1467506)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 3 august 2015 15:13:15
Problema Range minimum query Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <cstdio>
#include <cmath>
int n,m;
int v[100005],a[100005];
bool x[100005];
int main()
{
    freopen ("rmq.in","r",stdin);
    freopen ("rmq.out","w",stdout);
    scanf("%d%d",&n,&m);
    int s=sqrt(n),nract;
    for(int i=1;i<=n;i++)
    {
        if(i%s==1)
        {
            nract=i;
            x[i]=1;
            v[i]=100000000;
        }
        scanf("%d",&a[i]);
        if(a[i]<v[nract]) v[nract]=a[i];
    }
    int i1,i2;
    for(int quer=1;quer<=m;quer++)
    {
        scanf("%d%d",&i1,&i2);
        int rasp=10000000;
        for(int i=i1;i<=i2;i++)
        {
            if(x[i]==1&&i+s<=i2)
            {
                if(rasp>v[i])
                {
                    rasp=v[i];
                    i+=s;
                    i--;
                }
            }
            else
            {
                if(rasp>a[i]) rasp=a[i];
            }
        }
        printf("%d\n",rasp);
    }
}