Pagini recente » Cod sursa (job #1804574) | Cod sursa (job #3220123) | Cod sursa (job #563799)
Cod sursa(job #563799)
# include <fstream>
using namespace std;
ifstream f ("rmq.in");
ofstream g ("rmq.out");
int a[100005][20],lg[100005],x,y,d,q,n,m,i,j,k;
int main ()
{
f>>n>>m;
for (i=1;i<=n;i++)
f>>a[i][0];
for (i=2;i<=n;i++)
lg[i]=lg[i/2]+1;
for (j=1;j<=lg[n];j++)
for (i=1;i<=n && i+(1<<j-1)<=n;i++)
{
k=i+(1<<j-1);
if (a[i][j-1]<a[k][j-1])
a[i][j]=a[i][j-1];
else
a[i][j]=a[k][j-1];
}
for (i=1;i<=m;i++)
{
f>>x>>y;
d=y-x+1;
q=lg[d];
if (a[x][q]<a[(y-(1<<q))+1][q])
g<<a[x][q]<<"\n";
else
g<<a[(y-(1<<q))+1][q]<<"\n";
}
return 0;
}