Cod sursa(job #385942)

Utilizator Cristi09Cristi Cristi09 Data 23 ianuarie 2010 20:00:38
Problema Arbori de intervale Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<stdio.h>
long n,m,a[100010];
FILE*f;
void read()
{   f=fopen("arbint.in","r");
	fscanf(f,"%ld%ld",&n,&m);
	long i=0;
	for(;i<n;++i)
	fscanf(f,"%ld",&a[i]);
}
long max(long a,long b)
{
	if(a>b)return a;
	return b;
}
long detmax(long st,long dr)
{
	if(st==dr)return a[st];
	long A=detmax(st,(st+dr)/2);
	long B=detmax((st+dr)/2+1,dr);
	return max(A,B);
}
int main()
{
	read();
	long st,dr;
	int c;
	FILE*g=fopen("arbint.out","w");
	for(;m;--m)
	{
	   fscanf(f,"%d %ld%ld",&c,&st,&dr);
	   if(!c)
	   fprintf(g,"%ld\n",detmax(st-1,dr-1));
	   else a[st-1]=dr;
	}
	fclose(f);
	fclose(g);
	return 0;
}