Cod sursa(job #1191407)

Utilizator Vally77FMI Calinescu Valentin Gelu Vally77 Data 27 mai 2014 15:44:09
Problema Range minimum query Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <fstream>
using namespace std;
ifstream ka("rmq.in");
ofstream ki("rmq.out");
int a[100005], b[100005][20], v[100005], n, m, x, y;
int main()
{
    ka >> n >> m;
    for(int i = 1; i <= n; i++)
    {
        ka >> a[i];
        b[i][0] = a[i];
    }
    for(int i = 2; i <= n; i++)
        v[i] = 1 + v[i>>1];
    for(int j = 1; (1 << j) <= n; j++)
            for(int i = 1; i <= n; i++)
                b[i][j] = min(b[i][j-1], b[i+(1 << (j-1))][j-1]);
    for(int i = 1; i <= m; i++)
    {
        ka >> x >> y;
        ki << min(b[x][v[y-x+1]], b[y - (1 << v[y-x+1]) +1][v[y-x+1]]) << '\n';
    }
}