Cod sursa(job #303164)

Utilizator tibiletsKoos Tiberiu Iosif tibilets Data 9 aprilie 2009 16:46:45
Problema Arbori de intervale Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<fstream.h>
#include<stdlib.h>
int N,M,a,b,A[200001],i=1,x,mx;
void act(int n,int st,int dr)
{if(st==dr)
  A[n]=x;
 else
 {int m=(st+dr)/2;
  if(i<=m)act(2*n,st,m);
  else    act(2*n+1,m+1,dr);
  A[n]=A[2*n];
  if(A[2*n]<A[2*n+1])A[n]=A[2*n+1];
 }
}
void in(int n,int st,int dr)
{if(a<=st&&dr<=b)
 {if(mx<A[n])mx=A[n];}
 else
 {int m=(st+dr)/2;
  if(a<=m) in(2*n,st,m);
  if(b>m)  in(2*n+1,m+1,dr);}
}
int main()
{ifstream f("arbint.in");
ofstream g("arbint.out");
f>>N>>M;
for(;i<=N;++i)
{f>>x;
 act(1,1,N);}
for(i=1;i<=M;++i)
{f>>x>>a>>b;
 if(!x)
 {mx=-1;
  in(1,1,N);
  g<<mx<<'\n';}
 else
 {i=a;
  x=b;
  act(1,1,N);}
}
}