Pagini recente » Cod sursa (job #2139242) | Cod sursa (job #1860691) | Cod sursa (job #3262787) | Cod sursa (job #108476) | Cod sursa (job #1969854)
#include <fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
#define nmax 100010
int maxim,x,ind,v[4*nmax],a,b;
void adaug(int inc,int fi,int poz)
{
if(inc==fi)
v[poz]=x;
else
{
int mij=(inc+fi)/2;
if(mij>=ind)
adaug(inc,mij,poz*2);
else
adaug(mij+1,fi,poz*2+1);
v[poz]=max(v[poz*2],v[poz*2+1]);
}
}
void ask(int inc,int fi,int poz)
{
if(a<=inc and fi<=b)
{if(maxim<v[poz])
maxim=v[poz];}
else
{
int mij=(inc+fi)/2;
if(a<=mij)
ask(inc,mij,poz*2);
if(b>mij)
ask(mij+1,fi,poz*2+1);
}
}
int main()
{
int i,n,m,tip;
f>>n>>m;
for(i=1;i<=n;i++)
{
ind=i;
f>>x;
adaug(1,n,1);
}
for(i=1;i<=m;i++)
{
f>>tip>>a>>b;
if(tip==1)
{
ind=a;
x=b;
adaug(1,n,1);
}
else
{
maxim=0;
ask(1,n,1);
g<<maxim<<'\n';
}
}
return 0;
}