Pagini recente » Cod sursa (job #2964707) | Cod sursa (job #908616) | Cod sursa (job #151859) | Cod sursa (job #2744484) | Cod sursa (job #2440161)
#include <bits/stdc++.h>
using namespace std;
ifstream in("arbint.in");
ofstream out("arbint.out");
const int N = 1e5+5;
int tree[4*N],x,y,pos,val;
void update(int node, int st, int dr)
{
if (st == dr)
tree[node] = y;
else
{
int mj = (st+dr)/2;
if (x<=mj)
update(2*node,st,mj);
else
update(2*node+1,mj+1,dr);
tree[node] = max(tree[2*node],tree[2*node+1]);
}
}
int query(int node, int st, int dr)
{
if (x<=st && dr<=y)
return tree[node];
int mj = (st+dr)/2,Max=0;
if (x<=mj)
Max = max(Max,query(2*node,st,mj));
if (y>mj)
Max = max(Max,query(2*node+1,mj+1,dr));
return Max;
}
int main()
{
int n,m;
in >> n >> m;
for (int i = 1; i<=n; i++)
{
x = i;
in >> y;
update(1,1,n);
}
for (int i = 1; i<=m; i++)
{
int type;
in >> type >> x >> y;
if (type)
update(1,1,n);
else
out << query(1,1,n) << "\n";
}
}