Pagini recente » Cod sursa (job #2070702) | Cod sursa (job #84522) | Cod sursa (job #1134031) | Cod sursa (job #767842) | Cod sursa (job #539763)
Cod sursa(job #539763)
#include<fstream>
#define dim 100001
using namespace std;
int v[dim],n,val,pos,maxim,s,f;
int arb[4*dim];
void Update(int nod,int l,int r)
{
if(l==r) {arb[nod]=val;return;}
int div=(l+r)/2;
if(pos<=div) Update(2*nod,l,div);
else Update(2*nod+1,div+1,r);
arb[nod]=max(arb[2*nod],arb[2*nod+1]);
}
void Query(int nod,int l,int r)
{
if(s<=l && r<=f)
{
if(maxim<arb[nod]) maxim=arb[nod];
return;
}
else
{
int div=(l+r)/2;
if(s<=div) Query(2*nod,l,div);
if(div<f) Query(2*nod+1,div+1,r);
}
}
int main()
{
int i,a,b,x,m;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
fin>>n>>m;
for(i=1;i<=n;i++)
{
fin>>x;val=x;pos=i;
Update(1,1,n);
}
for(i=1;i<=m;i++)
{
fin>>x>>a>>b;
if(x==1) {pos=a;val=b;Update(1,1,n);}
if(x==0) {s=a;f=b;maxim=-1;Query(1,1,n);fout<<maxim<<endl;}
}
fin.close();
fout.close();
return 0;
}