100842024-03-26 17:23:18matyiBináris fa magassága (50 pont)cpp17Elfogadva 50/50133ms5744 KiB
#include <iostream>
#include <fstream>

using namespace std;

int gyorshatvany(int n)
{
    if (n==0)
        return 1;
    else
    {
        int hatvany=gyorshatvany(n/2); // 2^n/2
        if (n%2==0)
        {
            return hatvany * hatvany;
        }
        else
            return hatvany * hatvany * 2;
    }
}

void alakit(int suly[], int hossz[], int csp , int darabcsucs)
{
    hossz[csp]=max(hossz[csp*2]+suly[csp*2] , hossz[csp*2+1]+suly[csp*2+1]);
    if (csp/2!=0)
    {
        alakit(suly,hossz,csp/2, darabcsucs);
    }
}

int main()
{

    int n,m;
    //ifstream fin("be.in");
    cin>>n>>m;
    int darabcsucs=gyorshatvany(n);
    int suly[darabcsucs]={0},hossz[darabcsucs]={0};
    int x,y;
    for (int i=2;i<darabcsucs;i++)
    {
        suly[i]=1;
    }

    for (int i=darabcsucs/2-1;i>=1;i--)
    {
        hossz[i]=hossz[i*2]+1;
    }
    for (int i=1;i<=m;i++)
    {
        cin>>x>>y;
        suly[x]=y;
        alakit(suly,hossz,x/2,darabcsucs);
        cout<<hossz[1]<< endl;
    }
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/03ms1876 KiB
2Elfogadva0/085ms3140 KiB
3Elfogadva2/24ms2424 KiB
4Elfogadva2/24ms2484 KiB
5Elfogadva2/24ms2748 KiB
6Elfogadva2/24ms2768 KiB
7Elfogadva3/34ms2896 KiB
8Elfogadva3/34ms3040 KiB
9Elfogadva3/34ms3132 KiB
10Elfogadva3/34ms3256 KiB
11Elfogadva2/2100ms4532 KiB
12Elfogadva2/2128ms4732 KiB
13Elfogadva2/2100ms4788 KiB
14Elfogadva2/2133ms5036 KiB
15Elfogadva2/285ms5120 KiB
16Elfogadva2/279ms5204 KiB
17Elfogadva2/279ms5332 KiB
18Elfogadva2/2123ms5416 KiB
19Elfogadva2/282ms5692 KiB
20Elfogadva3/382ms5720 KiB
21Elfogadva3/386ms5736 KiB
22Elfogadva3/396ms5736 KiB
23Elfogadva3/381ms5744 KiB