Cod sursa(job #2523376)

Utilizator KataIsache Catalina Kata Data 13 ianuarie 2020 23:05:13
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.57 kb
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int rmq[200005][30], doi[200005];
int main()
{
    int n,i,m,j,x,y;
    fin>>n>>m;
    for(i=1;i<=n;i++)
        fin>>rmq[i][0];

    for(i=2;i<=n;i++)
        doi[i]=doi[i/2]+1;
    for(j=1;j<=doi[n];j++)  //lungimi
        for(i=1;i<=n;i++)   //inceput
            rmq[i][j]=min(rmq[i][j-1], rmq[i+(1<<(j-1))][j-1]);

    for(i=1;i<=m;i++)
    {
        fin>>x>>y;
        fout<<min(rmq[x][doi[y-x]],   rmq[y-(1<<doi[y-x])+1][doi[y-x]])<<'\n';
    }
    return 0;
}