Pagini recente » Cod sursa (job #343214) | Cod sursa (job #340166) | Cod sursa (job #745844) | Cod sursa (job #1782443) | Cod sursa (job #694592)
Cod sursa(job #694592)
#include <fstream>
using namespace std;
ofstream g("arbint.out");
int a[400005],x,y,z,n,m,ma;
void update(int nod, int st, int dr)
{if(st==dr) a[nod]=z;
else
{if(y<=(st+dr)/2) update(2*nod,st,(st+dr)/2);
else
update(2*nod+1,(st+dr)/2+1,dr);
a[nod]=max(a[2*nod],a[2*nod+1]);
}
}
void query(int nod, int st, int dr)
{
if(y<=st&&dr<=z){ if(ma<a[nod]) ma=a[nod];}
else
{if(y<=(st+dr)/2) query(nod*2,st,(st+dr)/2);
if(z>(st+dr)/2) query(nod*2+1,(st+dr)/2+1,dr);
}
}
int main ()
{ifstream f("arbint.in");
f>>n>>m;
for(y=1;y<=n;y++)
{f>>z; update(1,1,n);}
while(m)
{f>>x>>y>>z;
if(!x)
{ma=0;
query(1,1,n);
g<<ma<<'\n';}
else
update(1,1,n);
m--;}
f.close(); g.close();
return 0;
}