Cod sursa(job #1301745)

Utilizator bence21Bako Bence bence21 Data 26 decembrie 2014 12:57:21
Problema Range minimum query Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<fstream>
using namespace std;
long t[100001],e[100001];
void quic(long r,long v)
{
    if(r<v)
    {
        long k=t[(r+v)/2],i,j;
        i=r-1;
        j=v+1;
        while(i<j)
        {
            do j--;while(t[j]>k);
            do i++;while(t[i]<k);
            if(i<j)
            {
                swap(t[i],t[j]);
                swap(e[i],e[j]);
            }
        }
        quic(r,j);
        quic(j+1,v);
    }
}
int main()
{
    ifstream f("rmq.in");
    ofstream g("rmq.out");
    long i,a,b,j,n,m;
    f>>n>>m;
    for(i=1;i<=n;i++)
    {
        f>>t[i];
        e[i]=i;
    }
    quic(1,n);
    for(i=1;i<=m;i++)
    {
        f>>a>>b;
        j=1;
        while(e[j]<a||e[j]>b)
            j++;
        g<<t[j]<<"\n";
    }
    f.close();
    g.close();
}