Cod sursa(job #152131)

Utilizator crawlerPuni Andrei Paul crawler Data 9 martie 2008 01:33:16
Problema Arbori de intervale Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <stdio.h>

#define Nmax 111111
#define KKK 1024
#define XXX KKK-1

int t[Nmax], n,m, MAX[Nmax/KKK];

void update(int i,int x)
{    
/*     int a=i/KKK;
     if (MAX[a]<=x) { MAX[a] = x;t[i]=x; }
     {
        t[i] = x;MAX[a]=-1;
        for (i=(i/KKK)*KKK;i&XXX;++i) if (t[i] > MAX[a]) MAX[a] = t[i];               
     }*/
}

int search(int a,int b)
{
     int ret=-1;
/*     for (int i=a;i<=b;)
     if (i&XXX == 0 && i+KKK <= b)
     {
               if (ret < MAX[i/KKK]) ret = MAX[i/KKK];
               i+=KKK;              
     }
      else
     {
               if (ret < t[i]) ret = t[i];
               ++i;              
     }*/
     return ret;
}

int main()
{
	freopen("arbint.in","r",stdin);
	freopen("arbint.out","w",stdout);

	scanf("%d%d", &n,&m);

	int i,x=1,a,b;

	for (i=1;i<=n;++i)
	{
		scanf("%d", &t[i]);
		if (MAX[i/KKK] < t[i]) MAX[i/KKK] = t[i];
	}

	for (i=1;i<=m;++i)
	{
		scanf("%d%d%d", &x,&a,&b);
		if (x==0)
		printf("%d\n", search(a,b));
		else update(a,b);
	}

	return 0;
}