Pagini recente » Cod sursa (job #848757) | Cod sursa (job #2040942) | Cod sursa (job #2685051) | Cod sursa (job #1573890) | Cod sursa (job #2686495)
#include <bits/stdc++.h>
using namespace std;
ifstream in("arbint.in");
ofstream out("arbint.out");
int n,m,a,b,v[4000001],maxi;
void update(int nod,int st,int dr)
{ if(st>a || dr<a)
return;
if(st==dr)
{ v[nod]=b;
return;
}
update(2*nod,st,(st+dr)/2);
update(2*nod+1,(st+dr)/2+1,dr);
v[nod]=max(v[nod*2],v[nod*2+1]);
}
void querry(int nod,int st,int dr)
{ if(a<=st && dr<=b)
{ maxi=max(maxi,v[nod]);
return;
}
if(dr<a || st>b)
return;
querry(2*nod,st,(st+dr)/2);
querry(2*nod+1,(st+dr)/2+1,dr);
}
int main()
{ in>>n>>m;
int p=1;
while(p<n)
p*=2;
for(int i=1;i<=n;i++)
{ in>>b; a=i;
update(1,1,p);
}
for(int i=1;i<=m;i++)
{ int c;
in>>c>>a>>b;
if(c==0)
{ maxi=0;
querry(1,1,p);
out<<maxi<<'\n';
}
else
update(1,1,p);
}
in.close();
out.close();
return 0;
}