Cod sursa(job #1015688)

Utilizator barabasi_csongorBarabasi Csongor barabasi_csongor Data 24 octombrie 2013 22:54:01
Problema Range minimum query Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <cstdio>
using namespace std;

struct el
{
    long int nr,poz;
}t[100005];

void quick_sort(long int st,long int dr)
{
    long int i=st,j=dr;
    long int pivot=t[(st+dr)/2].nr;
    el aux;
    do
        {
            while(t[i].nr<pivot) i++;
            while(t[j].nr>pivot) j--;
            if(i<=j)
                {
                    aux=t[i];
                    t[i]=t[j];
                    t[j]=aux;
                    i++;j--;
                }
        }while(i<=j);
    if(i<dr) quick_sort(i,dr);
    if(j>st) quick_sort(st,j);
}

int main()
{freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
long int n,m;
scanf("%ld%ld",&n,&m);
for(int i=1;i<=n;i++)
    {
        scanf("%ld",&t[i].nr);
        t[i].poz=i;
    }
quick_sort(1,n);
long int a,b;
for(int i=1;i<=m;i++)
    {
        scanf("%ld%ld",&a,&b);
        int da=1;
        for(int i=1;i<=n && da;i++)
            {
                if(t[i].poz<=b && t[i].poz>=a)
                    {
                        da=0;printf("%ld\n",t[i].nr);
                    }
            }
    }
return 0;
}