Pagini recente » Cod sursa (job #928372) | Cod sursa (job #933238) | Cod sursa (job #3288230) | Cod sursa (job #2940438) | Cod sursa (job #1058549)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int n,b,a,m,arb[200002],i;
int zero(int nod,int st,int dr)
{
int m1=0,m2=0,m;
m=(st+dr)/2;
if(a<=st&&dr<=b) return arb[nod];
if(a<=m) m1=zero(nod*2,st,m);
if(b>m) m2=zero(nod*2+1,m+1,dr);
return max(m1,m2);;
}
void unu(int nod,int st,int dr)
{
long m=(st+dr)/2;
if(st==dr&&st==a) {arb[nod]=b;return;}
else if(st==dr) return;
if (a<=m) unu(nod*2,st,m);
else unu(nod*2+1,m+1,dr);
if(arb[nod*2]>arb[nod*2+1]) arb[nod]=arb[nod*2];
else arb[nod]=arb[nod*2+1];
}
void create(int nod,int st,int dr)
{
if(st==dr) {f>>arb[nod];return;}
create(nod*2,st,(st+dr)/2);
create(nod*2+1,(st+dr)/2+1,dr);
if(arb[nod*2]>arb[nod*2+1]) arb[nod]=arb[nod*2];
else arb[nod]=arb[nod*2+1];
}
int main()
{
bool o;
f>>n>>m;
create(1,1,n);
for(i=1;i<=m;i++)
{
f>>o>>a>>b;
if(o) unu(1,1,n);
else g<<zero(1,1,n)<<"\n";
}
//for(i=1;i<=2*n-1;i++) cout<<arb[i]<<" ";
f.close();g.close();
return 0;
}