8947 2024. 02. 07 16:35:17 Tina0731 Bináris fa magassága (50 pont) cpp14 Időlimit túllépés 34/50 600ms 5084 KiB
#include <iostream>
#include <cmath>
#include <bits/stdc++.h>

using namespace std;

/*
3 5
2 6
4 3
6 7
5 4
2 1


*/

int main()
{
    int n;
    cin>>n;
    long long int lszam=1<<(n-1), szam=lszam<<1; //levelek
    //cout<<lszam<<" "<<szam;
    vector <long long int> fa(szam);
    vector <long long int> levelek(lszam+1);
    for(int i=0;i<=lszam;i++)
         levelek.at(i)=n-1;
    long long int legnagyobb=n-1;
    fa.at(1)=0;
    for (int i=2;i<szam;i++)
        fa.at(i)=1;
    int muv;
    cin>>muv;
    //vector<int> kimenet(muv);
    vector<int> szintek{1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536};
    int hol, mire;
    for (int i=0;i<muv;i++)
    {
        bool rendezni = false;
        cin>>hol>>mire;
        int szint=0;
        while(hol>=szintek[szint])
        {
            szint++;
        }
        //cout<<"szint:"<<szint<<endl;
        int tav=n-szint;
        int valt=mire-fa.at(hol);
        fa.at(hol)=mire;
        for(int i=(hol<<tav)-(lszam-1);i<=((hol+1)<<tav)-lszam;i++)
          if(valt != 0)
          {
              if (valt<0 && levelek.at(i)==legnagyobb)
                 rendezni=true;
              levelek.at(i)+=valt;
              if (valt>0 && levelek.at(i)>legnagyobb)
                 legnagyobb=levelek.at(i);

          }
        if (rendezni)
          legnagyobb=*max_element(levelek.begin(),levelek.end());
     /*
        cout<<"A levelek tartalma: "<<endl;
        for(int i=1;i<lszam+1;i++)
        {
            cout<<levelek.at(i)<<"  ";
        }
      */
        //kimenet.at(i)=legnagyobb;
        cout<<legnagyobb<<endl;
    }
    /*
    */
    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 34/50
1 Elfogadva 0/0 3ms 1816 KiB
2 Elfogadva 0/0 326ms 3404 KiB
3 Elfogadva 2/2 4ms 2092 KiB
4 Elfogadva 2/2 4ms 2216 KiB
5 Elfogadva 2/2 4ms 2432 KiB
6 Elfogadva 2/2 4ms 2536 KiB
7 Elfogadva 3/3 4ms 2744 KiB
8 Elfogadva 3/3 4ms 2952 KiB
9 Elfogadva 3/3 4ms 3036 KiB
10 Elfogadva 3/3 4ms 3164 KiB
11 Elfogadva 2/2 207ms 4732 KiB
12 Elfogadva 2/2 324ms 4820 KiB
13 Elfogadva 2/2 426ms 4944 KiB
14 Időlimit túllépés 0/2 518ms 5084 KiB
15 Időlimit túllépés 0/2 577ms 3568 KiB
16 Elfogadva 2/2 328ms 4924 KiB
17 Elfogadva 2/2 324ms 4824 KiB
18 Elfogadva 2/2 326ms 4828 KiB
19 Elfogadva 2/2 328ms 4824 KiB
20 Időlimit túllépés 0/3 547ms 3552 KiB
21 Időlimit túllépés 0/3 565ms 3568 KiB
22 Időlimit túllépés 0/3 600ms 3524 KiB
23 Időlimit túllépés 0/3 565ms 3768 KiB