Pagini recente » Cod sursa (job #665336) | Cod sursa (job #2623273) | Cod sursa (job #1959774) | Cod sursa (job #2773475) | Cod sursa (job #2594303)
#include <bits/stdc++.h>
#define DIM 100005
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int N, M;
int MaxArb[5*DIM], poz, val;
int maxim,a,b;
bool op;
void Update(int nod, int st, int dr){
if(st == dr)
MaxArb[nod] = val;
else{
int mij = (st + dr)/2;
if(poz <= mij)
Update(2*nod, st, mij);
else
Update(2*nod+1, mij+1, dr);
MaxArb[nod] = max(MaxArb[2*nod], MaxArb[2*nod+1]);
}
}
void Query(int nod, int st, int dr){
if(a <= st && dr <= b){
if(maxim < MaxArb[nod])
maxim = MaxArb[nod];
}
else{
int mij = (st + dr)/2;
if(mij >= a)
Query(2*nod, st, mij);
if(mij < b)
Query(2*nod+1, mij+1, dr);
}
}
int main(){
f>>N>>M;
for(int i=1; i<=N; i++){
f>>val; poz=i;
Update(1,1,N);
}
for(int i=1; i<=M; i++){
f>>op>>a>>b;
if(op == 0){
maxim = -1;
Query(1,1,N);
g<<maxim<<"\n";
}
else{
poz = a, val = b;
Update(1,1,N);
}
}
}