Pagini recente » Cod sursa (job #2683079) | Cod sursa (job #2241574) | Cod sursa (job #1999078) | Statistici Ungurii-si-autonomia (mar3l3B0SS) | Cod sursa (job #1795587)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
const int p=400003;
int n,m,i,j,a,b,c,z=1,aint[p],get_max(int,int,int);
int main()
{
f>>n>>m;
while(2*z<=n)z=2*z;
for(i=1,j=z;i<=n;i++,j++)
f>>aint[j];
for(j=z-1;j>=1;j--)
aint[j]=max(aint[2*j],aint[2*j+1]);
for(;m;m--)
{
f>>c>>a>>b;
if(c==0)
g<<get_max(1,1,z)<<'\n';
else
{
j=z-1+a;
aint[j]=b;
for(j/=2;j>=1;j/=2)
aint[j]=max(aint[2*j],aint[2*j+1]);
}
}
return 0;
}
int get_max(int nod,int st,int dr)
{
if(a>dr||st>b)
return 0;
if(a<=st&&dr<=b)
return aint[nod];
int mi=(st+dr)/2;
return max(get_max(2*nod,st,mi),get_max(2*nod+1,mi+1,dr));
}