Pagini recente » Cod sursa (job #1692062) | Cod sursa (job #1655351) | Cod sursa (job #2828900) | Cod sursa (job #649115) | Cod sursa (job #2174463)
# include <fstream>
# define DIM 100010
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int d[20][DIM],lg[DIM],p[20],n,m,i,j,np,st,dr;
int main () {
fin>>n>>m;
for(i=1;i<=n;i++)
fin>>d[0][i];
p[0]=1;
for(i=2;i<=DIM-5;i++){
lg[i]=lg[i/2]+1;
if(lg[i]>lg[i-1])
p[++np]=i;
}
np++;
p[np]=p[np-1]*2;
for(j=1;p[j]<=n;j++)
for(i=1;i<=n;i++)
d[j][i]=min(d[j-1][i],d[j-1][i+p[j-1]]);
for(i=1;i<=m;i++){
fin>>st>>dr;
if(st>dr)
swap(st,dr);
fout<<min(d[lg[dr-st+1]][st],d[lg[dr-st+1]][dr-p[lg[dr-st+1]]+1])<<"\n";
}
return 0;
}