Pagini recente » Cod sursa (job #1901450) | Cod sursa (job #1863615) | Cod sursa (job #2460202) | Cod sursa (job #1093981) | Cod sursa (job #1833194)
#include<fstream>
#define NMax 100005
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
int N,M,QL,QR,K,Val;
int A[NMax],IT[4*NMax];
void Build(int Nod,int L,int R)
{
int Mid = (L + R) / 2;
if(L == R)
{
IT[Nod] = A[Mid];
return;
}
Build(2*Nod,L,Mid);
Build(2*Nod+1,Mid+1,R);
IT[Nod] = max(IT[2*Nod],IT[2*Nod+1]);
}
void Read()
{
fin>>N>>M;
for(int i = 1 ; i <= N ; ++i)
fin>>A[i];
Build(1,1,N);
}
void Update(int Nod,int L,int R)
{
int Mid = (L + R) / 2;
if(L == R)
{
IT[Nod] = Val;
return;
}
if(K <= Mid) Update(2*Nod,L,Mid);
else Update(2*Nod+1,Mid+1,R);
IT[Nod] = max(IT[2*Nod],IT[2*Nod+1]);
}
int Query(int Nod,int L,int R)
{
int Mid = (L + R) / 2;
if(QL <= L && R <= QR) return IT[Nod];
int QMax = 0;
if(QL <= Mid) QMax = max(QMax,Query(2*Nod,L,Mid));
if(QR > Mid) QMax = max(QMax,Query(2*Nod+1,Mid+1,R));
return QMax;
}
int main()
{
Read();
while(M--)
{
int cod,a,b; fin>>cod;
if(cod)
{
fin>>K>>Val;
Update(1,1,N);
}
else
{
fin>>QL>>QR;
fout<<Query(1,1,N)<<"\n";
}
}
fin.close();
fout.close();
return 0;
}