Pagini recente » Cod sursa (job #2707698) | Cod sursa (job #1529265) | Cod sursa (job #1151487) | Cod sursa (job #1076773) | Cod sursa (job #1034621)
#include <fstream>
using namespace std;
ifstream f("arbint.in"); ofstream g("arbint.out");
int n,m,op,p,u,vmax,AI[3*100000];
inline int Maxim(int a, int b) {return a>b ? a : b;}
void Inserare(int nod,int st,int dr)
{ if(st==dr) AI[nod]=u;
else
{ int mij=(st+dr)>>1;
if(p<=mij) Inserare(nod*2,st,mij); else Inserare(nod*2+1,mij+1,dr);
AI[nod]=Maxim(AI[nod*2],AI[nod*2+1]);
}
}
void Interogare(int nod, int st, int dr)
{ if(p<=st && dr<=u) vmax=Maxim(vmax,AI[nod]);
else
{ int mij=(st+dr)>>1;
if(p<=mij) Interogare(2*nod,st,mij);
if(mij<u) Interogare(2*nod+1,mij+1,dr);
}
}
int main()
{ f>>n>>m;
for(p=1;p<=n;++p) f>>u, Inserare(1,1,n);// creare AI
while(m--)
{ int Op;
f>>Op>>p>>u;
if(Op) Inserare(1,1,n);
else vmax=0, Interogare(1,1,n), g<<vmax<<'\n';
}
return 0;
}