Pagini recente » Cod sursa (job #1182694) | Cod sursa (job #1943750) | Cod sursa (job #614705) | Cod sursa (job #491725) | Cod sursa (job #3123771)
#include <fstream>
#include <tgmath.h>
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
int n, m, arb[20][100010], c, x, y, lg, i, j, k;
/*void reinit(int l, int pos)
{
if(pos-(1<<l)>0)
{
arb[l+1][pos-(1<<l)]=arb[l][pos];
reinit(l+1, pos-(1<<l));
}
if(pos+(1<<l)<=n && arb[l][pos]>arb[l+1][pos+(1<<l)])
{
arb[l+1][pos+(1<<l)]=arb[l][pos];
reinit(l+1, pos-(1<<l));
}
}*/
int main()
{
fin>>n>>m;
for(i=1; i<=n; i++)
{
fin>>arb[0][i];
}
for(i=1; i<=int(log2(n)); i++)
{
for(j=1; j<=n-(1<<i)+1; j++)
arb[i][j]=max(arb[i-1][j], arb[i-1][j+(1<<(i-1))]);
}
for(k=1; k<=m; k++)
{
fin>>c>>x>>y;
if(c==0)
{
lg=y-x+1;
fout<<max(arb[int(log2(lg))][x], arb[int(log2(lg))][y-(1<<int(log2(lg)))+1])<<'\n';
}
else
{
arb[0][x]=y;
for(i=1; i<=int(log2(n)); i++)
{
for(j=1; j<=n-(1<<i)+1; j++)
arb[i][j]=max(arb[i-1][j], arb[i-1][j+(1<<(i-1))]);
}
/*for(i=1; i<=int(log2(n)); i++)
{
for(j=1; j<=n-(1<<i)+1; j++)
fout<<arb[i][j]<<' ';
fout<<'\n';
}*/
}
}
return 0;
}