Pagini recente » Cod sursa (job #1909792) | Cod sursa (job #1542792) | Cod sursa (job #2000392) | Cod sursa (job #1714134) | Cod sursa (job #1377890)
#include <fstream>
#define DIM 100001
#define minim(a, b) ((a<b)?a:b)
using namespace std;
int v[DIM], m[17][DIM], lg[DIM], x, y, q, n, log2;
int main()
{
ifstream in("rmq.in");
ofstream out("rmq.out");
in>>n>>q;
for(int i=1; i<=n; ++i)
{
in>>v[i];
m[0][i]=v[i];
if(i>1)
lg[i]=lg[i/2]+1;
}
for(int j=1; (1<<j)<=n; ++j)
{
for(int i=1; i+(1<<j)-1<=n; ++i)
{
m[j][i]=minim(m[j-1][i], m[j-1][i+(1<<(j-1))]);
}
}
while(q--)
{
in>>x>>y;
log2=lg[y-x+1];
out<<minim(m[log2][x], m[log2][y+1-(1<<log2)])<<"\n";
}
in.close();
out.close();
return 0;
}