Pagini recente » Cod sursa (job #2081170) | Cod sursa (job #1336163) | Cod sursa (job #594928) | Cod sursa (job #491097) | Cod sursa (job #1520058)
#include <fstream>
#include <iomanip>
#include <algorithm>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int p, q, cod, a, b, n, i, t = 1, aint[265000], query(int, int, int);
int main()
{
f>>n>>q;
while(t<n)
t*=2;
t--;
for(i=1;i<=n;i++)
f>>aint[t+i];
for(p=t;p;p--)
aint[p]=max(aint[2*p],aint[2*p+1]);
for(;q;q--)
{
f>>cod>>a>>b;
if(cod==1)
{
aint[t+a]=b;
for(p=(t+a)/2;p;p/=2)
aint[p]=max(aint[2*p],aint[2*p+1]);
continue;
}
g<<query(1,1,t+1)<<'\n';
}
return 0;
}
int query(int nod, int L, int R)
{
if(b<L||R<a)
return 0;
if(a<=L&&R<=b)
return aint[nod];
return max(query(2*nod,L,(L+R)/2),query(2*nod+1,(L+R)/2+1,R));
}