Pagini recente » Cod sursa (job #2033043) | Istoria paginii runda/croitorasul_cel_viteaz/clasament | Cod sursa (job #228414) | Statistici Brehuescu Roland Cristian (The_Black_Hunter) | Cod sursa (job #1093856)
#include <fstream>
#define NMAX 262150
using namespace std;
FILE* f=freopen("arbint.in","r",stdin);
FILE* o=freopen("arbint.out","w",stdout);
int n;
int a,b;
int tree[NMAX];
int maxim(int a, int b) {return (a>b)?a:b;}
int maxi;
void Update(int nod, int left, int right)
{
int mj=left+(right-left)/2;
if(left==right)
tree[nod]=b;
else {
if(mj>=a)
Update(2*nod,left,mj);
else
Update(2*nod+1,mj+1,right);
tree[nod]=maxim(tree[nod*2],tree[nod*2+1]);
}
}
void Ask(int nod, int left, int right)
{
int mj=left+(right-left)/2;
if(left>=a&&right<=b) {
if(tree[nod]>maxi)
maxi=tree[nod];
}
else {
if(mj<b)
Ask(2*nod+1,mj+1,right);
if(mj>=a)
Ask(2*nod,left,mj);
}
}
int main()
{
int m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i)
{
a=i;
scanf("%d",&b);
Update(1,1,n);
}
for(int i=0;i<m;++i)
{
int act;
scanf("%d%d%d",&act,&a,&b);
if(act)
Update(1,1,n);
else {
maxi=0;
Ask(1,1,n);
printf("%d\n",maxi);
}
}
return 0;
}