Cod sursa(job #1866412)

Utilizator GeoeyMexicanuBadita George GeoeyMexicanu Data 3 februarie 2017 00:10:05
Problema Arbori de intervale Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <fstream>
#define zeros(x) ((x^(x-1)) & x )
#define N 100010

using namespace std;

ifstream f("arbint.in");
ofstream g("arbint.out");

int maxArb[N],i,j,n,m,k,t,p,r;

void Add(int p,int quant)
{
    int i;
    for(i=p;i<=n;i+=zeros(i))
        maxArb[i]=quant;
}
int query(int p)
{
    int i,max1=-13;
    for(i=p;i>0;i=i-zeros(i))
    max1=max(max1,maxArb[i]);
    return max1;
}
int main()
{
    int x,y,z;
    f>>n>>m;
    for(i=1;i<=n;i++)
    {
        f>>x;
        Add(i,x);
    }
    int rez;
    while(m!=0)
    {
        f>>x>>y>>z;
        if(x==0)
        {
            rez=max(query(y),query(z));
            g<<rez<<"\n";
        }
        else
        {
            Add(y,z);
        }
        m--;
    }
}