Pagini recente » Istoria paginii utilizator/dadu2544 | Profil MihneaK | Atasamentele paginii bairam_aladin | Istoria paginii utilizator/m75778 | Cod sursa (job #971514)
Cod sursa(job #971514)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n,m,mn[100005][17],lg[100005],a[100005];
void Read()
{ int i;
f>>n>>m;
for(i=1;i<=n;i++)
f>>a[i];
}
void Process()
{ int i,val=0,log,lim;
for(i=2;i<=n;i++)
lg[i]=lg[i/2]+1;
for(i=1;i<=n;i++) mn[i][0]=a[i];
for(log=1;(1<<log)<=n;log++)
{ lim=n-(1<<log)+1;
for(i=1;i<=lim;i++)
mn[i][log]=min(mn[i][log-1],mn[i+(1<<(log-1))][log-1]);
}
}
void Solve()
{ int i,x,y,len;
for(i=1;i<=m;i++)
{ f>>x>>y;
len=lg[y-x+1];
g<<min(mn[x][len],mn[y-(1<<len)+1][len])<<"\n";
}
}
int main()
{ Read();
Process();
Solve();
return 0;
}