Pagini recente » Cod sursa (job #199451) | Cod sursa (job #2714089) | Cod sursa (job #2076055) | Cod sursa (job #405498) | Cod sursa (job #2134633)
#include <fstream>
#include <algorithm>
#define ZERO 0
using namespace std;
ifstream fi("rmq.in");
ofstream fo("rmq.out");
int N,Table[100001][19];
int Q,k,p;
int main()
{
fi>>N>>Q;
for (int i=1;i<=N;i++)
fi>>Table[i][0];
/// se construieste Table
k=0;
p=1;
while (p*2<=N)
{
k++;
p=p*2;
}
for (int j=1;j<=k;j++)
for (int i=1;i<=N-(1<<j)+1;i++)
Table[i][j]=min(Table[i][j-1],Table[i+(1<<(j-1))][j-1]);
/// interogari
for (int q=1;q<=Q;q++)
{
int st,dr;
fi>>st>>dr;
int answer;
answer=100001;
for (int j=k;j>=0;j--)
if (st+(1<<j)-1<=dr)
{
answer=min(answer,Table[st][j]);
st=st+(1<<j);
}
fo<<answer<<"\n";
}
fi.close();
fo.close();
return 0;
}