Pagini recente » Cod sursa (job #2172121) | Cod sursa (job #2153586) | Cod sursa (job #834212) | Cod sursa (job #3126166) | Cod sursa (job #288832)
Cod sursa(job #288832)
#include<fstream>
using namespace std;
int v[450000],val,poz,i,n,maxim,p,u,m,op;
int Maxim(int a,int b)
{ if(a<b) return b;
return a;
}
void query(int nod,int s,int d)
{
if(p<=s&&d<=u)
{ if(maxim<v[nod]) maxim=v[nod];
return;
}
int m=(s+d)>>1;
if(p<=m) query(2*nod,s,m);
if(m<u) query(2*nod+1,m+1,d);
}
void update(int nod, int s, int d)
{
if (s==d)
{
v[nod] = val;
return;
}
int m=(s+d)>>1;
if(poz<=m) update(2*nod,s,m);
else update(2*nod+1,m+1,d);
v[nod]=Maxim(v[2*nod],v[2*nod+1]);
}
int main()
{
ifstream f("arbint.in");
ofstream g("arbint.out");
f>>n>>m;
for(i=1;i<=n;i++)
{ f>>val; poz=i;
update(1,1,n);
}
for(i=1;i<=m;i++)
{ f>>op>>p>>u;
if(op==0)
{ maxim=-1; query(1,1,n); g<<maxim<<'\n';}
else { poz=p; val=u; update(1,1,n);}
}
f.close();
g.close();
return 0;
}