Pagini recente » Cod sursa (job #1883586) | Cod sursa (job #1767645) | Cod sursa (job #1104877) | Cod sursa (job #637693) | Cod sursa (job #2225560)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
struct element
{
int x,y;
}v[100000];
void qSort (element v[100000],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,minim;
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";}
}