Pagini recente » Cod sursa (job #978351) | Cod sursa (job #2543806) | Cod sursa (job #2063770) | Cod sursa (job #2525157) | Cod sursa (job #1046596)
#include<fstream>
using namespace std;
ifstream f ("rmq.in");
ofstream g("rmq.out");
int v[100005][20],n,m,x,y,i,lg[100005],j;
int query(int a, int b)
{
int putere,l;
l=b-a+1;
putere=lg[l];
return min(v[a][putere],v[a+l-(1<<putere)][1]);
}
int main ()
{
f>>n>>m;
for (i=1;i<=n;i++)
f>>v[i][0];
for (i=2;i<=n;i++)
lg[i]=lg[1>>i]+1;
for(i=1;(1<<i)<=n;i++)
{
for(j=1;j<=n-(1<<i)+1;++j)
v[j][i]=min(v[j][i-1],v[j+(1<<(i-1))][i-1]);
}
for (i=1;i<=m;i++)
{
f>>x>>y;
g<<query(x,y)<<"\n";
}
f.close();
g.close();
return 0;
}