192602025-12-03 09:56:11szabelrBináris fa magassága (50 pont)cpp17Accepted 50/50119ms1092 KiB
#include <iostream>
#include <cmath>

using namespace std;
int check(int x,int dist[],int best[])
{
    while(x>0)
    {
        best[x]=max(dist[2*x]+best[x*2],dist[2*x+1]+best[x*2+1]);

        x=x/2;
    }
    return best[1];
}
int main()
{
    int dist[65537]{1};
    int best[65537];
    int n,m;
    cin>>n>>m;
    int i=1;
    int x=n-1;
    int a=1;
    while(i<pow(2,n))
    {
        if(i==pow(2,a))
        {
            x--;
            a++;
        }

        best[i]=x;
        i++;
    }
    for(int i=0; i<pow(2,n); i++)
    {
        dist[i]=1;
    }
    int b,c;
    for(int i=0; i<m; i++)
    {
        cin>>b>>c;
        dist[b]=c;
        cout<<check(b/2,dist,best)<<endl;
    }

    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms564 KiB
2Accepted0/0107ms1076 KiB
3Accepted2/23ms564 KiB
4Accepted2/23ms564 KiB
5Accepted2/23ms564 KiB
6Accepted2/23ms564 KiB
7Accepted3/33ms564 KiB
8Accepted3/33ms564 KiB
9Accepted3/33ms564 KiB
10Accepted3/34ms564 KiB
11Accepted2/2119ms932 KiB
12Accepted2/2115ms928 KiB
13Accepted2/2119ms940 KiB
14Accepted2/2109ms1076 KiB
15Accepted2/2115ms1092 KiB
16Accepted2/2115ms936 KiB
17Accepted2/2115ms1076 KiB
18Accepted2/2107ms1076 KiB
19Accepted2/2108ms1076 KiB
20Accepted3/3109ms1076 KiB
21Accepted3/3109ms1076 KiB
22Accepted3/3104ms1076 KiB
23Accepted3/3104ms1072 KiB