# PBinfo #1794 – aint – Rezolvare C++

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

## Enunț

Cerința
Se dă un vector cu N elemente numere naturale numerotate de la 1 la N și M operații de forma:


1 x y, cu semnificația: elementul de poziția x ia valoarea valoarea y.
2 x y: se determină valoarea minimă a elementelor cu indici cuprinși între x și y.

Afișați rezultatele operațiilor de tipul 2.

Date de intrare
Fișierul de intrare aint.in conține pe prima linie numerele N și M. Pe următoarea linie se află N elemente ce reprezintă elementele vectorului. Pe următoarele M linii se află operațiile efectuate pe vector.

Date de ieșire
Fișierul de ieșire aint.out va conține răspunsurile operațiilor de tipul 2, în ordinea în care apar în fișierul de intrare. 

Restricții și precizări

1 ≤ N,M ≤ 100000
Elementele vectorului sunt ≤ 1000000000
Pentru operațiile de tipul 1, 1 ≤ x ≤ N, 0 ≤ y ≤ 1000000000
Pentru operațiile de tipul 2, 1 ≤ x ≤ y ≤ N

Exemplu:
aint.in

7 4
2 3 4 1 2 7 2
1 2 3
1 4 6
2 2 6
2 1 7
aint.out

2
2

## Cod sursă C++

```cpp
#include <bits/stdc++.h>
#define nmax 100001
using namespace std;
ifstream fin("aint.in");
ofstream fout("aint.out");
int arb[4*nmax+55];
int i,n,v,m,mi,x,y,t;
void update(int nod, int st, int dr, int poz, int val)
{
    if(st==dr)
    {
        arb[nod]=val;
        return;
    }
    int mij=(st+dr)/2;
    if(poz<=mij)update(2*nod,st,mij,poz,val);
    else update(2*nod+1,mij+1,dr,poz,val);
    arb[nod]=min(arb[2*nod],arb[2*nod+1]);
}
void query(int nod, int st, int dr, int a, int b)
{
    if(a<=st && dr<=b)
    {
        mi=min(mi,arb[nod]);
        return;
    }
    int mij=(st+dr)/2;
    if(a<=mij)query(2*nod,st,mij,a,b);
    if(mij<b)query(2*nod+1,mij+1,dr,a,b);
}
int main()
{
    fin>>n>>m;
    for(i=1;i<=n;i++)
    {
        fin>>v;
        update(1,1,n,i,v);
    }
    while(m--)
    {
        fin>>t>>x>>y;
        if(t==1)
            update(1,1,n,x,y);
        else
        {
            mi=INT_MAX;
            query(1,1,n,x,y);
            fout<<mi<<"\n";
        }
    }
    return 0;
}
```

## Resurse

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