Pagini recente » Cod sursa (job #2616339) | Cod sursa (job #2295124) | Cod sursa (job #901638) | Cod sursa (job #1430991) | Cod sursa (job #1288835)
#include<fstream>
using namespace std;
int ar[400000];
int val,poz;
void upd(int nod,int b,int e)
{
int mij;
if(b==e)
{
ar[nod]=val;
return;
}
else
mij=(b+e)/2;
if(mij>=poz)
upd(nod*2,b,mij);
else
upd(nod*2+1,mij+1,e);
ar[nod]=max(ar[nod*2],ar[nod*2+1]);
}
int maxx,b,f;
void quest(int nod,int s,int d)
{
if(s>=b&&d<=f)
{
if(maxx<ar[nod])
maxx=ar[nod];
return;
}
int mij=(s+d)/2;
if(mij>=b)
quest(nod*2,s,mij);
if(f>mij)
quest(nod*2+1,mij+1,d);
}
int main()
{
ifstream si("arbint.in");
ofstream so("arbint.out");
int n,m;
si>>n>>m;
int i;
for(i=1;i<=n;++i)
{
si>>val;
poz=i;
upd(1,1,n);
}
int a;
while(m--)
{
si>>a;
if(a==1)
{
si>>poz>>val;
upd(1,1,n);
}
else
{
si>>b>>f;
maxx=0;
quest(1,1,n);
so<<maxx<<'\n';
}
}
}