Pagini recente » Cod sursa (job #3223921) | Cod sursa (job #104650) | Cod sursa (job #1730865) | Cod sursa (job #2770249) | Cod sursa (job #1288806)
#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;
si.open("arbint.in");
ofstream so;
so.open("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<<endl;
}
}
}