125172024-12-21 13:14:29feheristvanBináris fa magassága (50 pont)cpp17Hibás válasz 0/50601ms26604 KiB
#include <iostream>
#include <set>
#include <vector>
#include <cmath>

using namespace std;

int main()
{
    vector <set<int>> elemek;
    /// i apja i / 2
    vector <int> ertek;
    int n, m;
    cin >> n >> m;
    int elemeksz = pow(2, n - 1);
    int maxim = n - 1;
    ertek.resize(n + 1 , 1);
    vector <int> magassag;
    magassag.resize(n + 1, n - 1);
    elemek.resize(elemeksz + 1);
    int a = 1, b = 0, hatvany = 2, k = elemeksz;
    for(int i = 1; i < elemeksz * 2; i ++){
        if(i < hatvany){
            a = b + 1;
            b = a + k - 1;
        } else{
            k /= 2;
            a = 1;
            b = a + k - 1;
            hatvany *= 2;
        }
        for(int j = a; j <= b; j ++){
            elemek[j].insert(i);
          //  cout << i << " ";
        }
       // cout << endl;
    }
    int x, y, apax, seged;
    vector <int> maxok;
    for(int i = 0; i < m; i ++){
        cin >> x >> y;
        apax = x / 2;
        seged = ertek[apax];
        ertek[apax] = y;
        for(int i = 1; i <= elemeksz; i ++){
            if(elemek[i].find(x) != elemek[i].end() and elemek[i].find(apax) != elemek[i].end()){
                magassag[i] = magassag[i] - seged + y;
            }
        }
        maxim = magassag[1];
        for(int i = 2; i <= elemeksz; i ++){
            if(magassag[i] > maxim){
                maxim = magassag[i];
            }
        }
        maxok.push_back(maxim);
    }
    for(auto i : maxok)
        cout << i << endl;
    /*
    for(int i = 1; i <= elemeksz; i ++){
        for(auto x : elemek[i]){
            cout << x << " ";
        }
        cout << endl;
    } */
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/50
1Hibás válasz0/01ms320 KiB
2Futási hiba0/065ms26424 KiB
3Hibás válasz0/23ms572 KiB
4Hibás válasz0/23ms320 KiB
5Futási hiba0/23ms320 KiB
6Futási hiba0/23ms320 KiB
7Futási hiba0/31ms320 KiB
8Futási hiba0/31ms320 KiB
9Futási hiba0/31ms428 KiB
10Futási hiba0/31ms320 KiB
11Időlimit túllépés0/2601ms26524 KiB
12Időlimit túllépés0/2587ms26428 KiB
13Időlimit túllépés0/2589ms26424 KiB
14Időlimit túllépés0/2584ms26564 KiB
15Időlimit túllépés0/2588ms26572 KiB
16Futási hiba0/270ms26424 KiB
17Futási hiba0/254ms26484 KiB
18Futási hiba0/254ms26424 KiB
19Futási hiba0/274ms26436 KiB
20Időlimit túllépés0/3601ms26424 KiB
21Időlimit túllépés0/3589ms26604 KiB
22Időlimit túllépés0/3583ms26420 KiB
23Futási hiba0/3314ms26424 KiB