Pagini recente » Cod sursa (job #2240364) | Cod sursa (job #2541591) | Cod sursa (job #2537649) | Cod sursa (job #2765700) | Cod sursa (job #1734168)
#include <iostream>
#include <fstream>
#define NMAX 100001
using namespace std;
int a[2*NMAX+1],p,A,B,n,x,m,v[NMAX],nr,val,Max;
ifstream in("arbint.in");
ofstream out("arbint.out");
void update(int nod,int st,int dr)
{
if(st==dr)
{
a[nod] = val;
}
else
{
int mij = (st+dr)/2;
if(nr<=mij)
{
update(2*nod,st,mij);
}
else
{
update(2*nod+1,mij+1,dr);
}
a[nod] = max(a[2*nod],a[2*nod+1]);
}
}
void querry(int nod,int st, int dr)
{
if(A<=st && dr <= B)
{
Max = max(Max,a[nod]);
}
else
{
int mij = (st+dr)/2;
if(A<=mij) querry(2*nod,st,mij);
if(mij<B) querry(2*nod+1,mij+1,dr);
}
}
int main()
{
in >> n >> m;
for(int i=1;i<=n;i++)
{
in >> val;
nr = i;
update(1,1,n);
}
for(int i=1;i<=m;i++)
{
in >> p >> A >> B;
if(p==1)
{
nr = A;
val = B;
update(1,1,n);
}else
{
Max = 0;
querry(1,1,n);
out << Max << "\n";
}
}
// for(int i=1;i<=2*n-1;i++)
// cout << i << " " <<a[i] << endl;
return 0;
}