Cod sursa(job #1628834)

Utilizator UngureanuRuxandraUngureanu Andreea Ruxandra UngureanuRuxandra Data 4 martie 2016 10:55:59
Problema Arbori de intervale Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int i,n,m,t,val,poz,x,y,semn,ma,a[10001];
void actualizare (int nod,int st,int dr)
{ int mij;
 if(st==dr)
   a[nod]=val;
   else
   {mij=(st+dr)/2;
    if(mij>=poz)
     actualizare(2*nod,st,mij);
    if(poz>mij)
        actualizare(2*nod+1,mij+1,dr);
    a[nod]=max(a[2*nod],a[2*nod+1]);



   }

}
void interogare(int nod,int st,int dr)
{ int mij;
  if(x<=st&&dr<=y)
   ma=max(ma,a[nod]);
       else
       {mij=(st+dr)/2;
        if(x<=mij)
             interogare(2*nod,st,mij);
        if(y>mij)
            interogare(2*nod+1,mij+1,dr);


       }

}
int main()
{ f>>n>>m;
  for ( int i = 1; i <= n; ++i ){

        f >> val;
        poz = i;
        actualizare(1, 1, n);
    }


   for(i=1;i<=m;++i)
   {       f>>semn>>x>>y;
        if(semn==0)
        {ma=0;
         interogare(1,1,n);
          g<<ma<<'\n';

        }
        else
        {poz=x;
         val=y;
         actualizare(1,1,n);

        }
   }
    return 0;
}