Pagini recente » Cod sursa (job #393231) | Cod sursa (job #2204902) | Cod sursa (job #1048660) | Cod sursa (job #3335252) | Cod sursa (job #3338593)
//
// main.cpp
// Aint cu batog
//
// Created by Andrada Minca on 20.01.2026.
//
#include <fstream>
#include <vector>
using namespace std;
ifstream cin("arbint.in");
ofstream cout("arbint.out");
const int B=300;
vector<int>v(100000),bucket(100000/B);
/*void check(int start)
{
bucket[start]=0;
bb[start]=0;
for(int i=start*B;i<=(start+1)*B;i++)bucket[start]=max(bucket[start],v[i]);
}*/
int get_bucket(int a)
{
return a/B;
}
int get_b_start(int a)
{
return a/B*B;
}
int get_b_end(int a)
{
return (a/B+1)*B-1;
}
void calc_max(int a,int b)
{
int ans=0;
for(int i=a/B+1;i<b/B;i++)
{
ans=max(ans,bucket[i]);
}
for(int i=a;i<=min(get_b_end(a),b);i++)
{
if(v[i]>ans)ans=v[i];
}
for(int i=max(get_b_start(b),a);i<=b;i++)
{
if(v[i]>ans)ans=v[i];
}
cout<<ans<<'\n';
}
void schimba(int a,int b)
{
v[a]=b;
int start=get_bucket(a);
bucket[start]=0;
for(int i=get_b_start(a);i<=get_b_end(a);i++)bucket[start]=max(bucket[start],v[i]);
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=0;i<n;i++)
{
cin>>v[i];
bucket[i/B]=max(bucket[i/B],v[i]);
}
for(int i=0;i<m;i++)
{
int c,a,b;
cin>>c>>a>>b;
a--;
b--;
if(c==0)
{
calc_max(a,b);
}
else
{
schimba(a,b+1);
}
}
return EXIT_SUCCESS;
}