Pagini recente » Cod sursa (job #2975541) | Cod sursa (job #862460) | Cod sursa (job #825258) | Cod sursa (job #1709065) | Cod sursa (job #3151815)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("arbint.in");
ofstream fout ("arbint.out");
int n, m, p, v[100005], x, y, z, a[1005];
int find (int x)
{
return (x+p-1)/p;
}
int main()
{
fin >> n >> m;
p=floor(sqrt(n));
for (int i=1; i<=n; i++)
{
fin >> v[i];
a[find(i)]=max(a[find(i)],v[i]);
}
for (int i=1; i<=m; i++)
{
fin >> z >> x >> y;
if (z==0)
{
int Max=-1;
if (x==y)
cout << v[x] << '\n';
else
{
for (int j=x; find(j)==find(x); j++)
Max=max(Max,v[j]);
for (int j=find(x)+1; j<=find(y)-1; j++)
Max=max(Max,a[j]);
for (int j=y; find(j)==find(y); j--)
Max=max(Max,v[j]);
cout << Max << '\n';
}
}
else
{
v[x]=y;
a[find(x)]=0;
for (int j=x; find(j)==find(x); j--)
a[find(x)]=max(a[find(x)],v[j]);
for (int j=x+1; find(j)==find(x); j++)
a[find(x)]=max(a[find(x)],v[j]);
}
}
return 0;
}