Cod sursa(job #2225568)

Utilizator Andrei-27Arhire Andrei Andrei-27 Data 27 iulie 2018 16:01:36
Problema Range minimum query Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
struct element
{
    int x,y;
}v[1000000];
void qSort (element v[1000000],int st, int dr){
int maxim,minim,temp,mijl;
maxim=dr;minim=st;
mijl=v[st+(dr-st)/2].x;
do{
        while (v[minim].x<mijl) minim++;
        while (v[maxim].x>mijl) maxim--;
        if(minim<=maxim){
            temp=v[minim].x;
            v[minim].x=v[maxim].x;
            v[maxim].x=temp;
             temp=v[minim].y;
            v[minim++].y=v[maxim].y;
            v[maxim--].y=temp;}
    }while (minim<=maxim);
    if(st<maxim) qSort (v,st,maxim);
    if(minim<dr) qSort (v,minim,dr);}
int main (){
int m,n,i,j,x,y;
f>>n>>m;
for(i=1;i<=n;i++)
    {f>>v[i].x;v[i].y=i;}
qSort(v,1,n);
for(i=1;i<=m;i++)
{f>>x>>y;
    j=1;
    while (v[j].y<x||v[j].y>y) j++;
    g<<v[j].x<<"\n";}
return 0;}