Pagini recente » Cod sursa (job #375093) | Cod sursa (job #883579) | Cod sursa (job #704420) | Cod sursa (job #2820130) | Cod sursa (job #1799550)
#include <bits/stdc++.h>
#define ll long long
#define maxn 200005
#define rc(s) return cout << s,0
#define _ ios_base::sync_with_stdio(false);cin.tie(0);
#define mp make_pair
#define pii pair<int,int>
#define vi vector<int>
#define vll vector<long long>
#define cin fin
#define cout fout
using namespace std;
const int inf = INT_MAX;
int n,m,val,pos,x,y,z,start,finish;
int aint[420420];
void upd(int nod,int l,int r)
{
if(l==r)
{
aint[nod] = val;
return ;
}
if(pos<=(l+r)/2) upd(nod*2,l,(l+r)/2);
else upd(nod*2+1,(l+r)/2+1,r);
aint[nod] = max(aint[nod*2],aint[nod*2+1]);
}
int qry(int nod,int l,int r)
{
if(start<=l && finish>=r)
return(aint[nod]);
if(start > r || finish < l) return -1;
return max(qry(nod*2,l,(l+r)/2),qry(nod*2+1,(l+r)/2+1,r));
}
int main(){_
ifstream fin("arbint.in");
ofstream fout("arbint.out");
cin >> n >> m;
for(int i = 1;i<=n;i++)
{
cin >> x;
val = x;
pos = i;
upd(1,1,n);
}
for(int i = 1;i<=m;i++)
{
cin >> x >> y >> z;
if(x)
{
val = z;
pos = y;
upd(1,1,n);
}
else
{
start = y;
finish = z;
cout << qry(1,1,n) << '\n';
}
}
return 0;
}