Mai intai trebuie sa te autentifici.
Cod sursa(job #2574232)
Utilizator | Data | 5 martie 2020 21:01:23 | |
---|---|---|---|
Problema | Range minimum query | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.66 kb |
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;
ifstream fin ("rmq.in");
ofstream fout ("rmq.out");
vector < int > a[18];
int v[NMAX];
int main()
{
int n, q, i, j, x, y, z;
fin >> n >> q;
for ( i = 1 ; i <= n ; i++ ) fin >> v[i], a[0].push_back ( v[i] );
x = log2 ( n );
for ( i = 1 ; i <= x ; i++ )
for ( j = 0 ; j <= n - ( 1 << i ) ; j++ )
a[i].push_back ( min ( a[i-1][j], a[i-1][j+(1<<(i-1))]) );
while ( q-- )
{
fin >> x >> y;
x--, y--;
z = log2 ( y - x + 1 );
fout << min ( a[z][x], a[z][y-(1<<z)+1] ) << '\n';
}
return 0;
}