Mai intai trebuie sa te autentifici.

Cod sursa(job #2754595)

Utilizator oana_mireaMirea Oana-Gabriela oana_mirea Data 26 mai 2021 01:32:35
Problema Range minimum query Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int q[100001][17];

int query(int st, int dr){
    int lung, k=0;
    lung = dr-st+1;
    while((1<<(k+1)) <= lung)
    {
        k++;
    }
    return min(q[st][k], q[dr-(1<<k)+1][k]);

}
int main()
{
int n,m,st,dr,L;
f>>n>>m;
int a[n+1];
for(int i=1;i<=n;i++)
    {f>>a[i];
    q[i][0]=a[i];}
L=int(log2(n));
for(int k=1;k<=L;k++)
    { int k1=1<<(k-1);
        for(int i=0; i+(1<<k)-1 <=n; i++)
    {
        q[i][k] = min(q[i][k-1], q[i+k1][k-1]);
    }}
for(int i=0; i<m;i++)
    {
   f>>st>>dr;
    g<<query(st,dr)<<endl;}
    return 0;
}