Pagini recente » Cod sursa (job #2457080) | Cod sursa (job #2588523) | Cod sursa (job #1487778) | Cod sursa (job #2686803) | Cod sursa (job #2525887)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
const int NMAX=1e5;
int n,m,a[4*NMAX+66];
int val,poz,x,y;
void Up(int c,int l,int r)
{
if(l==r)
{
a[c]=val;
return;
}
int div=(l+r)/2;
if(poz<=div)
Up(2*c,l,div);
else
Up(2*c+1,div+1,r);
a[c]=max(a[2*c+1],a[2*c]);
}
int Find(int c,int l,int r)
{
if(y<l or r<x)
return -1;
if(x<=l and r<=y)
return a[c];
int div=(l+r)/2;
return max(Find(2*c,l,div),Find(2*c+1,div+1,r));
}
int main()
{
fin >> n >> m;
for(int i=1;i<=n;i++)
{
fin >> val;
poz=i;
Up(1,1,n);
}
for(;m;m--)
{
int t;
fin >> t >> x >> y;
if(t%2==0)
fout << Find(1,1,n) << "\n";
else
{
poz=x;
val=y;
Up(1,1,n);
}
}
return 0;
}