129012025-01-03 10:38:57SRobBináris fa magassága (50 pont)cpp17Időlimit túllépés 2/50600ms1004 KiB
// binaris_fa_magassaga_2024_12_29.cpp : Defines the entry point for the console application.
//

//#include "stdafx.h"
#include <bits/stdc++.h>
#include <algorithm>
#include <vector>
#include <math.h>
#include <iostream>
#include <cmath>

using namespace std;


const int maxN = 100000;
int main()
{
	
	int size,O;
	size = 0;
	O = 0;
	cin >> size >> O;
	int edges[maxN] = {1}; //(pow(2,size)-2)
  int vegyertek[maxN];//pow(2,size)-2


	
	int mE, v, Max,X,D,A; //mE: változtatott edge, V:változtatás, D: változtatás mértéke a szinthez képest,
	//X: milyen "messze" vagyunk mE-től
	//A: ugrás utáni számláló
	//  mostaniEdge, változtatás
	X = 0;
	A = 0;
	D = 0;
	Max = 0;

	for (int i = 0; i < O; i++) // az EGÉSZ EDGES tömböt 2-től indexeljük
	{
	    
	    X = 0;
	    A = 0;
	    D = 0;
      cin >> mE >> v;
      if(edges[mE-2] == 0)
      {
        D = v-1;
      }
      else
      {
        D = v - edges[mE-2];
      }
      
      edges[mE-2] = v;
      X = (size-1)-floor(log2(mE));
      int k = 0;
      while(A<pow(2,X))
      {
        if(mE == 2)
        {
          k = 2*pow(2,X)+A-2;
          vegyertek[k] += D;
          
          //cout<< "A ";
        }
        else if(mE == 3)
        {
          k =3*pow(2,X)+A-2;
          vegyertek[k] += D;
          
          //cout<< "B ";
        }
        else
        {
          k = mE*pow(2,X) + A-2;
          vegyertek[k] += D;
          
          //cout<< "C ";
        }
        
        Max = *max_element(vegyertek,vegyertek + int(pow(2,size-1))+1);
        A++;
      }
    	cout<<Max+size-1 <<endl;
    	//cout<<endl<<"delta: "<<D<<" X: "<< X <<" max: "<<max << endl<<"-----"<< endl;
	}
}
  
RészfeladatÖsszpontTesztVerdiktIdőMemória
base2/50
1Elfogadva0/01ms568 KiB
2Időlimit túllépés0/0578ms816 KiB
3Elfogadva2/23ms568 KiB
4Hibás válasz0/23ms748 KiB
5Hibás válasz0/23ms568 KiB
6Hibás válasz0/23ms568 KiB
7Hibás válasz0/34ms568 KiB
8Hibás válasz0/34ms572 KiB
9Hibás válasz0/37ms568 KiB
10Hibás válasz0/37ms568 KiB
11Időlimit túllépés0/2577ms1004 KiB
12Időlimit túllépés0/2580ms824 KiB
13Időlimit túllépés0/2600ms824 KiB
14Időlimit túllépés0/2587ms824 KiB
15Időlimit túllépés0/2584ms940 KiB
16Időlimit túllépés0/2587ms824 KiB
17Időlimit túllépés0/2600ms800 KiB
18Időlimit túllépés0/2572ms804 KiB
19Időlimit túllépés0/2579ms832 KiB
20Időlimit túllépés0/3600ms880 KiB
21Időlimit túllépés0/3600ms824 KiB
22Időlimit túllépés0/3583ms824 KiB
23Időlimit túllépés0/3580ms824 KiB