Pagini recente » Cod sursa (job #664200) | Cod sursa (job #1109851) | Cod sursa (job #1638848) | Cod sursa (job #500047) | Cod sursa (job #968643)
Cod sursa(job #968643)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
const int N = 100005;
int n, m, x, a, b, maxi;
vector <int> arb(N, 0);
void Update(int nod, int st, int dr)
{
if(st == dr){
arb[nod] = x;
return ;
}
int m = (st + dr) >> 1;
if(a <= m) Update(2*nod, st, m);
else Update(2*nod+1, m+1, dr);
arb[nod] = max(arb[2*nod], arb[2*nod+1]);
}
void Find(int nod, int st, int dr)
{
if(a <= st && dr <= b)
{
maxi = max(maxi, arb[nod]);
return;
}
int m = (st + dr) >> 1;
if(a <= m) Find(2*nod, st, m);
else Find(2*nod+1, m+1, dr);
}
int main()
{
fin>>n>>m;
for(int i=1; i<=n; i++)
{
fin>>x; a = i;
Update(1, 1, n);
}
while(m--)
{
bool cod;
fin>>cod;
if(!cod){
fin>>a>>b;
maxi = -1;
Find(1, 1, n);
fout<<maxi<<'\n';
}
else{
fin>>a>>b;
x = b;
Update(1, 1, n);
}
}
return 0;
}