Pagini recente » Cod sursa (job #2006676) | Cod sursa (job #1560943) | Cod sursa (job #443392) | Cod sursa (job #1167536) | Cod sursa (job #3042145)
#include <fstream>
using namespace std;
ifstream cin ("rmq.in");
ofstream cout ("rmq.out");
int tabel[17][100000];
int ln (int numar)
{
int biti = 0;
while (numar)
numar >>= 1 , biti++;
return biti - 1;
}
int main ()
{
int lungime , intrebari;
cin >> lungime >> intrebari;
for (int indice = 0 ; indice < lungime ; indice++)
cin >> tabel[0][indice];
for (int linie = 1 ; (1 << linie) <= lungime ; linie++)
for (int coloana = 0 ; coloana + (1 << linie) <= lungime ; coloana++)
tabel[linie][coloana] = min(tabel[linie - 1][coloana] , tabel[linie - 1][coloana + (1 << (linie - 1))]);
int stanga , dreapta;
for (int indice = 1 ; indice <= intrebari ; indice++)
{
cin >> stanga >> dreapta;
cout << min(tabel[ln(dreapta - stanga + 1)][stanga - 1] , tabel[ln(dreapta - stanga + 1)][dreapta - (1 << ln(dreapta - stanga + 1))]) << '\n';
}
cout.close(); cin.close();
return 0;
}