128912025-01-02 23:05:03SRobBináris fa magassága (50 pont)cpp17Időlimit túllépés 20/50600ms896 KiB
// binaris_fa_magassaga_2024_12_29.cpp : Defines the entry point for the console application.
//

//#include "stdafx.h"

#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 ";
        }
        A++;
      }
      max = vegyertek[int(pow(2,size-1)-2)];
      for(int j = pow(2,size-1)-2; j<pow(2,size)-2; j++)
      {
        
        //cout<< vegyertek[j]<<" ";
        if(vegyertek[j] > max)
        {
          max = vegyertek[j];
        }
      }
    	cout<<max+size-1 <<endl;
    	//cout<<endl<<"delta: "<<D<<" X: "<< X <<" max: "<<max << endl<<"-----"<< endl;
	}
}
  
RészfeladatÖsszpontTesztVerdiktIdőMemória
base20/50
1Elfogadva0/01ms568 KiB
2Időlimit túllépés0/0584ms824 KiB
3Elfogadva2/23ms568 KiB
4Elfogadva2/23ms568 KiB
5Elfogadva2/23ms568 KiB
6Elfogadva2/23ms568 KiB
7Elfogadva3/34ms568 KiB
8Elfogadva3/36ms568 KiB
9Elfogadva3/38ms656 KiB
10Elfogadva3/38ms568 KiB
11Időlimit túllépés0/2598ms888 KiB
12Időlimit túllépés0/2600ms876 KiB
13Időlimit túllépés0/2598ms876 KiB
14Időlimit túllépés0/2582ms828 KiB
15Időlimit túllépés0/2587ms824 KiB
16Időlimit túllépés0/2600ms856 KiB
17Időlimit túllépés0/2600ms896 KiB
18Időlimit túllépés0/2579ms824 KiB
19Időlimit túllépés0/2586ms828 KiB
20Időlimit túllépés0/3598ms892 KiB
21Időlimit túllépés0/3600ms856 KiB
22Időlimit túllépés0/3577ms824 KiB
23Időlimit túllépés0/3586ms824 KiB