# PBinfo #1899 – AfisMinime – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

Cerința
Se dă un vector cu n elemente, numere naturale. Fie două numere x și y, cu proprietatea că 1 ≤ x, y ≤ n.

Scrieți un program care răspunde la m întrebări de tipul “Care este elementul minim din intervalul [x, y]?”.

Date de intrare
Pe prima linie a fișierului afisminime.in sunt date numerele n și m. Pe a doua linie se vor afla n numere naturale, fiind elementele vectorului. Următoarele m linii vor conține câte 2 numere reprezentând valorile x și y, care definesc întrebările.

Date de ieșire
În fișierul de ieșire afisminime.out, vor fi m linii, fiecare conținând câte un număr, pe linia i aflându-se răspunsul pentru întrebarea  i.

Restricții și precizări

1 ≤ n ≤ 100.000
1 ≤ m ≤ 1.000.000
1 ≤ x, y ≤ n

Exemplu:
afisminime.in

5 4
1 3 18 2 3
1 5
2 3
3 4
2 4
afisminime.out

1
3
2
2
Explicație

în intervalul [1, 5] minimul este 1
în intervalul [2, 3] minimul este 3
în intervalul [3, 4] minimul este 2
în intervalul [2, 4] minimul este 2

## Cod sursă C++

```cpp
//Dobricean Ionut-100pct
#include<fstream>
using namespace std;
ifstream fin("afisminime.in");
ofstream fout("afisminime.out");
int r[100001][19],v[100001]; //definirea matricii  si vectorul de citire
int main()
{int n,m,i,j,a,b,rez,l;
    fin>>n>>m;
    v[1]=0;
    for(i=2;i<=n;i++)
        v[i]=1+v[i/2];
    for(i=1;i<=n;i++)
    {
       fin>>r[i][0];
        for(j=1;(1<<j)<=i;j++)
            r[i][j]=min(r[i-(1<<(j-1))][j-1],r[i][j-1]);
    }
    for(i=1;i<=m;i++)
    {
    fin>>a>>b;
        l=v[b-a+1];
        rez=min(r[a+(1<<l)-1][l],r[b][l]);
      fout<<rez<<"\n";
    }
    return 0;
    fin.close();
    fout.close();
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/1899)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/1899/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-1899/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
