Pagini recente » Cod sursa (job #1766818) | Cod sursa (job #571040) | Cod sursa (job #1009396) | Cod sursa (job #1696051) | Cod sursa (job #949983)
Cod sursa(job #949983)
#include <cstdio>
#include <algorithm>
using namespace std;
inline int tata(const int nod)
{
return nod/2;
}
inline int fiu1(const int nod)
{
return nod*2;
}
inline int fiu2(const int nod)
{
return nod*2+1;
}
struct sp
{
int a,b;
int val;
} v[500000];
void build(int nod,int a,int b)
{
v[nod].a=a;
v[nod].b=b;
v[nod].val=0;
if(a<b)
{
int mij=(a+b)/2;
build(fiu1(nod),a,mij);
build(fiu2(nod),mij+1,b);
}
}
void update(int val,int nod,int a)
{
if(v[nod].a<v[nod].b)
{
int mij=(v[nod].a+v[nod].b)/2;
if(a<=mij)
{
update(val,fiu1(nod),a);
}
else if(a>mij)
{
update(val,fiu2(nod),a);
}
v[nod].val=max(v[fiu1(nod)].val,v[fiu2(nod)].val);
}
else v[nod].val=val;
}
int n,m;
int main()
{
freopen("aint.in","r",stdin);
freopen("aint.out","w",stdout);
scanf("%d%d",&n,&m);
build(1,1,n);
for(int i=1;i<=n;i++)
{
int a;
scanf("%d",&a);
update(a,1,i);
}
for(int i=1;i<=m;i++)
{
int o,a,b;
scanf("%d%d%d",&o,&a,&b);
if(o==0)
{
update(b,1,a);
for(int i=1;i<=10;i++)
printf("%d %d : %d\n",v[i].a,v[i].b,v[i].val);
printf("\n");
}
else if(o==1)
{
}
}
return 0;
}