Pagini recente » Cod sursa (job #1273141) | Cod sursa (job #2029885) | Cod sursa (job #3004406) | Cod sursa (job #1254705) | Cod sursa (job #1825566)
#include <fstream>
#include <iostream>
#include <cstdlib>
#define dim 100001
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
int n, m, arb[4*dim + 66], val, pos, X, A, B, maxim, start, finish, N;
void Update(int nod, int left, int right)
{
if(left==right)
{
arb[nod] = val;
return;
}
int mid = (left+right)/2;
if(pos<=mid) Update(nod*2, left, mid);
else Update(nod*2+1, mid+1, right);
arb[nod] = max(arb[nod*2], arb[nod*2+1]);
}
int Query(int nod, int left, int right)
{
if(start<=left && right<=finish)
return arb[nod];
if(right<start || left>finish)
return -1000000;
int mid=(left+right)/2;
return max(Query(nod*2, left, mid), Query(nod*2+1, mid+1, right));
}
int main()
{
fin>>n>>m;
for(N=1; N<n; N<<=1);
for(int i=1; i<=n; i++)
{
fin>>val;
pos = i;
Update(1,1,N);
}
while(m--)
{
fin>>X>>A>>B;
if(X==0)
{
start = A;
finish = B;
fout<<Query(1,1,N)<<'\n';
}
else
{
pos=A;
val=B;
Update(1,1,N);
}
}
return 0;
}