128872025-01-02 22:11:26SRobBináris fa magassága (50 pont)cpp17Időlimit túllépés 20/50600ms1196 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;



int main()
{
	
	int size,O;
	size = 0;
	O = 0;
	cin >> size >> O;
	vector<int> edges(pow(2,size)-2); 
  vector<int> vegyertek(pow(2,size)-2);
  vector<int> eddigMagassag(pow(2,size)-2 + 2);

	for (int i = 0; i < pow(2,size)-2; i++) // az EGÉSZ EDGES tömböt 2-től indexeljük
	{
		vegyertek[i] = floor(log2(i+2));
		edges[i] = 1;
	}
	//for (int i = 0; i < pow(2,size)-2; i++) //ell
	//{
	//	cout<<edges[i];
	//}
	
	
	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;
      
      D = v - edges[mE-2];
      edges[mE-2] = v;
      X = (size-1)-floor(log2(mE));
      while(A<pow(2,X))
      {
        if(mE == 2)
        {
          vegyertek[2*pow(2,X)+A-2] += D;
          //cout<< "A ";
        }
        else if(mE == 3)
        {
          vegyertek[3*pow(2,X)+A-2] += D;
          //cout<< "B ";
        }
        else
        {
          vegyertek[mE*pow(2,X) + A-2] += D;
          //cout<< "C ";
        }
        A++;
      }
      max = vegyertek[pow(2,size-1)-2];
      for(int j = pow(2,size-1)-1; j<pow(2,size)-2; j++)
      {
        
        if(vegyertek[j] > max)
        {
          max = vegyertek[j];
        }
      }
    	cout<<max <<endl;
    	//cout<<endl<<"delta: "<<D<<" X: "<< X <<" max: "<<max << endl<<"-----"<< endl;
	}
}
  
RészfeladatÖsszpontTesztVerdiktIdőMemória
base20/50
1Elfogadva0/01ms320 KiB
2Időlimit túllépés0/0578ms1080 KiB
3Elfogadva2/23ms320 KiB
4Elfogadva2/23ms320 KiB
5Elfogadva2/23ms320 KiB
6Elfogadva2/23ms320 KiB
7Elfogadva3/34ms560 KiB
8Elfogadva3/34ms332 KiB
9Elfogadva3/38ms320 KiB
10Elfogadva3/38ms320 KiB
11Időlimit túllépés0/2600ms1080 KiB
12Időlimit túllépés0/2600ms1196 KiB
13Időlimit túllépés0/2600ms1080 KiB
14Időlimit túllépés0/2584ms1084 KiB
15Időlimit túllépés0/2586ms1080 KiB
16Időlimit túllépés0/2600ms1080 KiB
17Időlimit túllépés0/2600ms1080 KiB
18Időlimit túllépés0/2587ms1080 KiB
19Időlimit túllépés0/2577ms1080 KiB
20Időlimit túllépés0/3600ms1080 KiB
21Időlimit túllépés0/3600ms1080 KiB
22Időlimit túllépés0/3586ms1080 KiB
23Időlimit túllépés0/3589ms1080 KiB