Pagini recente » Cod sursa (job #2101670) | Cod sursa (job #2687922) | Cod sursa (job #2053277) | Cod sursa (job #1544860) | Cod sursa (job #2134048)
#include <bits/stdc++.h>
std::ifstream in("rmq.in");
std::ofstream out("rmq.out");
using namespace std;
int d[25][100005];
int lg[100005];
int n,m;
int main()
{
int x,y;
in >> n >> m ;
lg[0]=1;
for(int i = 2 ; i <= n ;++i)
lg[i]=lg[i/2]+1;
// ca sa fac in o(1);
for(int j = 1; j <= n ;++j)
in>>d[0][j];
//asta i prima
for( int i =1 ; i <=lg[n];++i)
for( int j = 1; j <= n-(1<<(i-1)); ++j)
d[i][j]=min(d[i-1][j],d[i-1][j+(1<<(i-1))]);
// am precalculat
for ( int i =1 ; i <= m ; ++i)
{
in >> x >> y ;
int k = lg[y-x+1];
out << min(d[k][x],d[k][y-(1<<k)+1]);
out<<"\n";
}
return 0;
}