Pagini recente » Cod sursa (job #133692) | Cod sursa (job #456724) | Cod sursa (job #2713731) | Cod sursa (job #2829261) | Cod sursa (job #2225568)
#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;}