Pagini recente » Cod sursa (job #2122313) | Cod sursa (job #1152105) | Cod sursa (job #1435576) | Cod sursa (job #117998) | Cod sursa (job #2101970)
#include <fstream>
#define ZERO 1000000000
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int N,k,p,Q,rez;
int Table[100001][20];
int main()
{
f>>N>>Q;
for (int i=1;i<=N;i++)
f>>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]);
/// se citesc si se solutioneaza interogarile
/*for(int i=1;i<=N;i++)
{
for(int j=0;j<=k;j++)
g<<Table[i][j]<<' ';
g<<endl;
}*/
for (int q=1;q<=Q;q++)
{
int st,dr;
f>>st>>dr;
rez=ZERO;
p=1;
k=0;
while(p<=dr-st+1)
{p=p*2;
k++;}
p=p/2;
k--;
rez=min(Table[st][k],Table[dr-p+1][k]); //dr-st+1
g<<rez<<"\n";
}
return 0;
}