Pagini recente » Profil usureluflorian | Cod sursa (job #372110) | Profil FaNaT1Co | Cod sursa (job #2092159) | Cod sursa (job #1799265)
#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 endl '\n'
#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,mx,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]);
}
void qry(int nod,int l,int r)
{
if(start<=l && r<=finish)
{
mx=max(mx,aint[nod]);
return;
}
if(start<=(l+r)/2) qry(2*nod,l,(l+r)/2);
if((l+r)/2<finish) qry(2*nod+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
{
mx = -1;
start = y;
finish = z;
qry(1,1,n);
cout << mx << endl;
}
}
return 0;
}