Pagini recente » Cod sursa (job #553015) | Cod sursa (job #1190356) | Cod sursa (job #1323398) | Cod sursa (job #1261790) | Cod sursa (job #1947685)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
vector<int> fa(525000);
int poz,n,m,i,x,koz,k,a,b;
void act(int csp,int bal,int jobb)
{
if(bal>=poz && jobb<=poz)
{
fa[csp]=x;
return;
}
koz=(bal+jobb)>>1;
if(poz<=koz) act(csp<<1,bal,koz);
else act((csp<<1)+1,koz+1,jobb);
fa[csp]=max(fa[csp<<1],fa[(csp<<1)+1]);
}
int inter(int csp,int bal,int jobb)
{
if(bal>=a && jobb<=b)
{
return fa[csp];
}
int x1=0,x2=0;
int koz=(bal+jobb)>>1;
if(a<=koz) x1=inter(csp<<1,bal,koz);
if(b>koz) x2=inter((csp<<1)+1,koz+1,jobb);
return max(x1,x2);
}
int main()
{
fin>>n>>m;
for(i=1;i<=n;i++)
{
fin>>x;
poz=i;
act(1,1,n);
}
for(i=1;i<=m;i++)
{
fin>>k>>a>>b;
if(k==1)
{
poz=a;
x=b;
act(1,1,n);
}
else
{
fout<<inter(1,1,n)<<"\n";
}
}
}