Pagini recente » Cod sursa (job #2131761) | Cod sursa (job #2691861) | Cod sursa (job #2763722) | Cod sursa (job #853522) | Cod sursa (job #2876122)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int v[100001],m[100001][100];
int n,nr_query;
void Citire()
{
f>>n>>nr_query;
for(int i=0;i<n;i++)
{
f>>v[i];
m[i][0] = v[i];
}
for(int k=1;k<17;k++)
{
for(int i=0;i+(1<<k)-1<n;i++)
{
m[i][k]=min(m[i][k-1],m[i+(1<<(k-1))][k-1]);
}
}
}
void Query(int st, int dr)
{
int length = dr - st + 1;
int k=0;
while((1<<(k+1))<=length)
{
k++;
}
g<<min(m[st][k],m[dr-(1<<k)+1][k])<<"\n";
}
int main()
{
Citire();
for(int i=1;i<=nr_query;i++)
{
int x,y;
f>>x>>y;
Query(x-1,y-1);
}
}