Cod sursa(job #1471119)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 13 august 2015 04:40:01
Problema Arbori de intervale Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.68 kb
#include<stdio.h>
int n,m,y,z,h[275005],x,r;
void A(int n,int s,int d) {
	if(y<=s&&d<=z) {
		r=r<h[n]?h[n]:r;
     	return;
	}
	int m=(s+d)/2;
	if(y<=m)
    	A(2*n,s,m);
	if(z>m)
    	A(2*n+1,m+1,d);
}
void B(int n,int s,int d) {
	if(s==d) {
		h[n]=z;
     	return;
	}
	int m=(s+d)/2;
	if(y<=m)
    	B(2*n,s,m);
	else
    	B(2*n+1,m+1,d);
	h[n]=h[2*n]<h[2*n+1]?h[2*n+1]:h[2*n];
}
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)
        	r=-1,A(1,1,n),printf("%d\n",r);
     	else
        	B(1,1,n);
	}
}