Pagini recente » Statistici Franciszek Gawron (frankson) | Profil M@2Te4i | Cod sursa (job #2487447) | Cod sursa (job #2855943) | Cod sursa (job #756079)
Cod sursa(job #756079)
#include <fstream>
using namespace std;
long N;
long A[131072];
long Data[20][131072];
long lg[131072];
long minint(long a,long b)
{
if (a < b)
{
return a;
}
return b;
}
void Build(void)
{
long l,i;
lg[1] = 0;
for (i = 2;i < N;i += 1)
{
lg[i] = lg[i >> 1] + 1;
}
for (i = 0;i < N;i += 1)
{
Data[0][i] = A[i];
}
for (l = 1;(1 << l) <= N;l += 1)
{
for (i = 0;i < N - (1 << (l - 1));i += 1)
{
Data[l][i] = minint(Data[l - 1][i],Data[l - 1][i + (1 << (l - 1))]);
}
}
}
long Compute(long x,long y)
{
long l = lg[y - x];
return minint(Data[l][x],Data[l][y - (1 << l) + 1]);
}
int main(void)
{
long M,i,x,y;
fstream fin("rmq.in",ios::in);
fstream fout("rmq.out",ios::out);
fin >> N >> M;
for (i = 0;i < N;i += 1)
{
fin >> A[i];
}
Build();
for (i = 0;i < M;i += 1)
{
fin >> x >> y;
fout << Compute(x - 1,y - 1) << "\n";
}
fin.close();
fout.close();
return 0;
}