97432024-03-05 18:11:01matyiBináris fa magassága (50 pont)cpp17Időlimit túllépés 30/50573ms4888 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;
    }
}

int main()
{

    int n,m;
    //ifstream fin("be.in");
    cin>>n>>m;
    int darabcsucs=gyorshatvany(n);
    int suly[darabcsucs]={0},hossz[darabcsucs/2]={0}, szint[darabcsucs]={0};
    int x,y;
    szint[1]=1;
    for (int i=2;i<darabcsucs;i++)
    {
        suly[i]=1;
        szint[i]=szint[i/2]+1;
    }
    for (int i=0;i<darabcsucs/2;i++)
    {
        hossz[i]=n-1;
    }
    int globalmaxi=-1, globalhely;
    for (int i=1;i<=m;i++)
    {
        cin>>x>>y;
        int kulonbseg=y-suly[x];
        suly[x]=y;
        int hatvany=gyorshatvany(n-szint[x]);
        int kezd=hatvany*x-(darabcsucs/2);
        int veg=kezd+hatvany-1;
        int maxi=-1, hely;
        for (int i=kezd;i<=veg;i++)
        {
            hossz[i]+=kulonbseg;
            if (hossz[i]>maxi){
                maxi=hossz[i];
                hely=i;
            }
        }
        if (maxi > globalmaxi)
        {
            globalmaxi = maxi;
            globalhely = hely;
        }
        else
        {
            if (globalhely>=kezd and globalhely<=veg)
            {
                globalmaxi=-1;
                for (int i=0;i<darabcsucs/2;i++)
                {
                    if (hossz[i]>globalmaxi)
                    {
                        globalmaxi=hossz[i];
                        globalhely=i;
                    }

                }
            }
        }
        cout<<globalmaxi<< endl;
    }
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base30/50
1Elfogadva0/03ms1752 KiB
2Elfogadva0/0411ms3192 KiB
3Elfogadva2/24ms2396 KiB
4Elfogadva2/24ms2472 KiB
5Elfogadva2/24ms2436 KiB
6Elfogadva2/24ms2688 KiB
7Elfogadva3/34ms2764 KiB
8Elfogadva3/34ms2856 KiB
9Elfogadva3/34ms2980 KiB
10Elfogadva3/34ms3120 KiB
11Elfogadva2/2303ms4636 KiB
12Időlimit túllépés0/2501ms4760 KiB
13Időlimit túllépés0/2541ms3316 KiB
14Időlimit túllépés0/2552ms3584 KiB
15Időlimit túllépés0/2564ms3564 KiB
16Elfogadva2/2416ms4852 KiB
17Elfogadva2/2412ms4836 KiB
18Elfogadva2/2421ms4880 KiB
19Elfogadva2/2435ms4888 KiB
20Időlimit túllépés0/3544ms3392 KiB
21Időlimit túllépés0/3552ms3472 KiB
22Időlimit túllépés0/3552ms3468 KiB
23Időlimit túllépés0/3573ms3512 KiB