84622024-01-16 21:03:05zoliBináris fa magassága (50 pont)cpp17Elfogadva 50/5039ms5816 KiB
#include <iostream>

using namespace std;
int a[65536]; ///2^16;
int os[65536];
int N,M;
int cs[50001],h[50001]; ///csucsok, hosszak
int mhat,min_lev;
void frissit(int cs)
{
    int i=cs/2;
    int regi;
    while(i>=1)
    {
        regi=a[i];
        {
            a[i]=max(a[2*i]+os[2*i],a[2*i+1]+os[2*i+1]);
            if(a[i]==regi) break;
            i=i/2;
        }
    }
}
void kiir()
{
    for(int i=1;i<mhat;i++) cout<<a[i]<<" ";
    cout<<endl;
}
void be()
{
    ///inicializal a
    cin>>N>>M;
    mhat=(1<<N);
    min_lev=mhat/2; /// elso level indexe
    for(int i=min_lev-1;i>=1;i--)
        a[i]=a[2*i]+1; /// az elejen minden el hossza 1, tehat mindegy a magassagot hol merem
    //kiir();
    for(int i=2;i<=mhat;i++) os[i]=1; /// i osetol az el hossza
    for(int i=1;i<=M;i++)
    {
        cin>>cs[i]>>h[i];
    }
    for(int i=1;i<=M;i++)
    {
        if(h[i]!=os[cs[i]]) ///ha valtozik a hossz
        {
            os[cs[i]]=h[i];
            frissit(cs[i]);
        }
        cout<<a[1]<<"\n";
         // kiir();
    }
}

int main()
{
    be();

    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/03ms1888 KiB
2Elfogadva0/034ms3796 KiB
3Elfogadva2/23ms2400 KiB
4Elfogadva2/23ms2532 KiB
5Elfogadva2/23ms2500 KiB
6Elfogadva2/23ms2708 KiB
7Elfogadva3/33ms3072 KiB
8Elfogadva3/33ms3324 KiB
9Elfogadva3/33ms3416 KiB
10Elfogadva3/33ms3356 KiB
11Elfogadva2/239ms5068 KiB
12Elfogadva2/237ms5148 KiB
13Elfogadva2/239ms5152 KiB
14Elfogadva2/239ms5384 KiB
15Elfogadva2/239ms5364 KiB
16Elfogadva2/234ms5360 KiB
17Elfogadva2/234ms5592 KiB
18Elfogadva2/234ms5596 KiB
19Elfogadva2/234ms5596 KiB
20Elfogadva3/335ms5724 KiB
21Elfogadva3/335ms5732 KiB
22Elfogadva3/335ms5716 KiB
23Elfogadva3/335ms5816 KiB