Cod sursa(job #765354)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 7 iulie 2012 12:52:13
Problema Arbori de intervale Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<cstdio>
int n,m,y,z,h[400005],x;

int A(int n,int s,int d)
{if(y<=s&&d<=z)
     return h[n];
int m=(s+d)/2,u,v;
u=(y<=m)?A(2*n,s,m):0;
v=(z>m)?A(2*n+1,m+1,d):0;
return u<v?v:u;}

void B(int n,int s,int d)
{if(s==d)
     h[n]=z;
else
     return (y<=(s+d)/2)?B(2*n,s,(s+d)/2):B(2*n+1,(s+d)/2+1,d);}

int main()
{freopen("arbint.in","r",stdin);
freopen("arbint.out","w",stdout);
scanf("%d%d",&n,&m);
for(y=1;y<=n;y++)
     scanf("%d",&z),B(1,1,n);
while(m--)
     {scanf("%d%d%d",&x,&y,&z);
     if(!x)
           printf("%d\n",A(1,1,n));
     else
           B(1,1,n);}
return 0;}