Cod sursa(job #3363767)

Utilizator Tudor_ChelaruChelaru Tudor Tudor_Chelaru Data 22 august 2026 13:55:42
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.62 kb
#include <fstream>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int n,m,i,x,y,log[100005],dp[20][100005],put,poz;
int main()
{
    cin>>n>>m;
    log[1]=0;
    for(i=2;i<=n;i++)
        log[i]=log[i/2]+1;
    for(i=1;i<=n;i++)
        cin>>dp[0][i];
    for(put=2;put<=n;put*=2)
    {
        for(poz=1;poz<=n-put+1;poz++)
        {
            dp[log[put]][poz]=min(dp[log[put]-1][poz],dp[log[put]-1][poz+put/2]);
        }
    }
    for(i=1;i<=m;i++)
    {
        cin>>x>>y;
        cout<<min(dp[log[y-x+1]][x],dp[log[y-x+1]][y+1-(1<<log[y-x+1])])<<'\n';
    }
    return 0;
}