Pagini recente » Cod sursa (job #2071198) | Cod sursa (job #1832959) | Cod sursa (job #1715180) | Cod sursa (job #474343) | Cod sursa (job #1398818)
#include <fstream>
#define DIM 100005
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
int arb[4*DIM],n,m,i,j,q,x,y,start,stop,val,poz,ans;
void apdate(int nod,int left,int right)
{
if(left == right){
arb[nod] = val;
return;
}
int mij = (left + right) / 2;
if(poz <= mij)
apdate(2 * nod,left,mij);
else
apdate(2 * nod + 1,mij + 1,right);
arb[nod] = max(arb[2 * nod] , arb[2 * nod + 1]);
}
void cueri(int nod,int left,int right)
{
if(right < start || left > stop)
return;
if(left >= start && right <= stop){
ans = max(ans,arb[nod]);
return;
}
int mij = (left + right) / 2;
cueri(2 * nod,left,mij);
cueri(2 * nod + 1,mij + 1,right);
}
int main()
{
fin>>n>>m;
for(i=1;i<=n;++i){
fin>>x;
val = x;
poz = i;
apdate(1,1,n);
}
for(i=1;i<=m;++i){
fin>>q>>x>>y;
if(q == 1){
poz = x;
val = y;
apdate(1,1,n);
}
else{
start = x;
stop = y;
ans=0;
cueri(1,1,n);
fout<<ans<<'\n';
}
}
return 0;
}