Pagini recente » Cod sursa (job #2712305) | Cod sursa (job #3125574) | Cod sursa (job #2123009) | Cod sursa (job #1160896) | Cod sursa (job #1921743)
#include <fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
#define nmax 100010
int ab[4*nmax];
int v[nmax],inc,sf,val,maxim,ind;
void update(int poz,int st,int dr)
{
if(st==dr)
{
ab[poz]=val;
}
else
{
int mij=(st+dr)/2;
if(ind<=mij)
update(poz*2,st,mij);
if(mij+1<=ind)
update(poz*2+1,mij+1,dr);
ab[poz]=max(ab[poz*2],ab[poz*2+1]);
}
}
void querry(int poz,int st,int dr)
{
if(inc<=st and dr<=sf)
{
maxim=max(maxim,ab[poz]);
}
else
{
int mij=(st+dr)/2;
if(inc<=mij)
querry(poz*2,st,mij);
if(sf>=mij+1)
querry(poz*2+1,mij+1,dr);
}
}
int main()
{
int n,m,i,x,tip;
f>>n>>m;
for(i=1;i<=n;i++)
{
f>>x;
val=x;
ind=i;
update(1,1,n);
}
for(i=1;i<=m;i++)
{
f>>tip>>inc>>sf;
if(tip==1)
{
val=sf;
ind=inc;
update(1,1,n);
}
else
{
maxim=-1;
querry(1,1,n);
g<<maxim<<'\n';
}
}
return 0;
}