Pagini recente » Cod sursa (job #1600898) | Cod sursa (job #453928) | Cod sursa (job #1283433) | Cod sursa (job #542276) | Cod sursa (job #1307154)
#include<iostream>
#include<fstream>
#include<algorithm>
#include<bitset>
#include<stack>
using namespace std;
#define maxpoz 105000
int m[maxpoz];
void init(int nod,int st,int dr,int v[])
{
if(st==dr)
{
//cout<<st<<' '<<nod<<' '<<v[st]<<endl;
m[nod]=v[st];
return;
}
int mij=(st+dr)/2;
init((nod+1)*2-1,st,mij,v);
init((nod+1)*2,mij+1,dr,v);
m[nod]=min(m[(nod+1)*2-1],m[(nod+1)*2]);
}
int intr(int st,int dr,int nod,int b,int e)
{
if(st>=b&&dr<=e)
return m[nod];
if(dr<b||st>e)
return -1;
int a,c,mij=(st+dr)/2;
a=intr(st,mij,(nod+1)*2-1,b,e);
c=intr(mij+1,dr,(nod+1)*2,b,e);
if(a==-1)
return c;
if(c==-1)
return a;
return min(a,c);
}
int main()
{
ifstream si;
si.open("rmq.in");
ofstream so;
so.open("rmq.out");
int n,x;
si>>n>>x;
int v[n],i;
for(i=0;i<n;++i)
si>>v[i];
init(0,0,n-1,v);
int a,b;
for(i=0;i<x;++i)
{
si>>a>>b;
--a;
--b;
so<<intr(0,n-1,0,a,b)<<'\n';
}
}