Pagini recente » Cod sursa (job #1318626) | Cod sursa (job #2864894) | Cod sursa (job #2546528) | Cod sursa (job #831816) | Cod sursa (job #565668)
Cod sursa(job #565668)
#include<fstream>
#include<algorithm>
#define NMAX 100005
using namespace std;
int a[17][NMAX], n, m, b[NMAX], c[NMAX];
ifstream f("rmq.in");
ofstream g("rmq.out");
void Citeste()
{
int i, p, k=0;
f>>n>>m;
p=1;
for (i=1; i<=n; ++i)
{
f>>a[0][i];
if (p*2>i) b[i]=p;
else c[i]=(++k), b[i]=p*2, p*=2;
}
}
void Preprop()
{
int p=2, k=1,i;
a[0][0]=2000000000;
while (p<=n)
{
for (i=p; i<=n; i++)
a[k][i]=min(a[k-1][i-(p/2)], a[k-1][i]);
p*=2; ++k;
}
}
void Solve()
{
int s, d, x;
while (m--)
{
f>>s>>d;
x=d-s+1;
g<<min(a[c[b[x]]][s+b[x]-1], a[c[b[x]]][d])<<"\n";
}
}
int main()
{
Citeste();
Preprop();
Solve();
f.close();
g.close();
return 0;
}