Pagini recente » Cod sursa (job #1827204) | Cod sursa (job #2827380) | Cod sursa (job #550248) | Cod sursa (job #791207) | Cod sursa (job #2502855)
#include <fstream>
#include <math.h>
using namespace std;
ifstream cin("arbint.in");
ofstream cout("arbint.out");
int n,m,r,v[100005];
struct nod{
int a,b,m;
}s[400];
int main(){
int i,j,k,x,c,a,b;
cin>>n>>m;
r=sqrt(n);
for(i=1;i<=n;i++)cin>>v[i];
for(j=1,x=0,k=0,i=1;i<=n;i++){
if(v[i]>x)x=v[i];
if(i%r==0 || i==n){
k++; s[k].a=j; s[k].b=i; s[k].m=x;
j=i+1;x=0;
}
}
while(m){
cin>>c>>a>>b;
if(c==0){
i=1+(a-1)/r;
j=1+(b-1)/r;
if(i==j){
x=0;
while(a<=b){
if(v[a]>x)x=v[a];
a++;
}
cout<<x<<"\n";
}
else{
x=0;
while(a<=s[i].b){
if(v[a]>x)x=v[a];;
a++;
}
i++;
while(i<j){
if(s[i].m>x)x=s[i].m;
i++;
}
a=s[j].a;
while(a<=b){
if(v[a]>x)x=v[a];
a++;
}
cout<<x<<"\n";
}
}
else{
v[a]=b;
i=1+(a-1)/r;
x=0;
for(j=s[i].a;j<=s[i].b;j++){
if(v[j]>x)x=v[j];
}
s[i].m=x;
}
m--;
}
cin.close(); cout.close();
return 0;
}