100842024-03-26 17:23:18matyiBináris fa magassága (50 pont)cpp17Accepted 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;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/03ms1876 KiB
2Accepted0/085ms3140 KiB
3Accepted2/24ms2424 KiB
4Accepted2/24ms2484 KiB
5Accepted2/24ms2748 KiB
6Accepted2/24ms2768 KiB
7Accepted3/34ms2896 KiB
8Accepted3/34ms3040 KiB
9Accepted3/34ms3132 KiB
10Accepted3/34ms3256 KiB
11Accepted2/2100ms4532 KiB
12Accepted2/2128ms4732 KiB
13Accepted2/2100ms4788 KiB
14Accepted2/2133ms5036 KiB
15Accepted2/285ms5120 KiB
16Accepted2/279ms5204 KiB
17Accepted2/279ms5332 KiB
18Accepted2/2123ms5416 KiB
19Accepted2/282ms5692 KiB
20Accepted3/382ms5720 KiB
21Accepted3/386ms5736 KiB
22Accepted3/396ms5736 KiB
23Accepted3/381ms5744 KiB