131892025-01-06 22:54:29mateBináris fa magassága (50 pont)cpp17Időlimit túllépés 20/50600ms1012 KiB
#include <bits/stdc++.h>
using namespace std;

vector <int> v;
vector <int> s;
int n,m;

int maxl = 0;

void bejar(int csucs, int osszeg){
	if(2 * csucs > (1 << (n)) - 1)	return;
	s[2*csucs] = osszeg + s[csucs];
	s[2*csucs + 1] = osszeg + s[csucs];
	bejar(2*csucs, osszeg);
	bejar(2*csucs + 1, osszeg);
	
}


void update(int csucs){
	if(csucs > (1<<n)-1){
		//maxl = max(maxl,v[csucs]);
		return;
	}
	s[csucs] = s[csucs/2] + v[csucs];
	//s[2*csucs + 1] = s[csucs] + v[2*csucs + 1];
	update(2*csucs);
	update(2*csucs + 1);
}


int main() {
	cin.tie(0); ios::sync_with_stdio(0);
	cin >> n >> m;
	v.resize((1 << (n))+1,1);
	s.resize((1 << (n))+1,0);
	bejar(1,1);
	while(m--){
		int a,b; cin >> a >> b;
		v[a] = b;
		maxl = 0;
		int maxi = 0;
		update(a);
		for(int i = (1 << n-1); i < (1 << n); i++){
			maxi = max(s[i],maxi);
		}
		cout << maxi << '\n';
		
	}

}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base20/50
1Elfogadva0/01ms316 KiB
2Időlimit túllépés0/0577ms1004 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva3/31ms316 KiB
8Elfogadva3/31ms424 KiB
9Elfogadva3/32ms316 KiB
10Elfogadva3/31ms344 KiB
11Időlimit túllépés0/2600ms956 KiB
12Időlimit túllépés0/2600ms956 KiB
13Időlimit túllépés0/2600ms960 KiB
14Időlimit túllépés0/2583ms820 KiB
15Időlimit túllépés0/2574ms820 KiB
16Időlimit túllépés0/2574ms820 KiB
17Időlimit túllépés0/2574ms1012 KiB
18Időlimit túllépés0/2584ms820 KiB
19Időlimit túllépés0/2584ms976 KiB
20Időlimit túllépés0/3584ms960 KiB
21Időlimit túllépés0/3584ms820 KiB
22Időlimit túllépés0/3587ms820 KiB
23Időlimit túllépés0/3583ms820 KiB