Pagini recente » Cod sursa (job #2273450) | Cod sursa (job #1212546) | Cod sursa (job #2300414) | Cod sursa (job #619614) | Cod sursa (job #573779)
Cod sursa(job #573779)
#include<fstream>
#define Nmax 100001
#define lgMax 18
using namespace std;
int N,M,v[Nmax],A[Nmax][lgMax],lg[Nmax];
void init()
{
int i,j;
for(j=1;(1<<j)<=N;++j)
{
for(i=1;i+(1<<j)-1<=N;++i)
A[j][i] = min(A[j-1][i], A[j-1][i+(1<<j-1)]);
}
}
int main()
{
ifstream f("rmq.in");
f>>N>>M;
int i,x,y,k;
for(i=2;i<=N;++i)
lg[i]=lg[i/2]+1;
for(i=1;i<=N;++i)
{
f>>v[i];
A[0][i] = v[i];
}
init();
ofstream g("rmq.out");
while(M--)
{
f>>x>>y;
k = lg[y-x+1];
g<<min(A[k][x] , A[k][y-(1<<k)])<<"\n";
}
f.close();
g.close();
return 0;
}