131922025-01-06 23:07:53mateBináris fa magassága (50 pont)cpp17Time limit exceeded 20/50600ms1076 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);
	
}


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


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;
		maxl = update(1) - 1;
		/*for(int i = (1 << n-1); i < (1 << n); i++){
			maxi = max(s[i],maxi);
		}*/
		cout << maxl << '\n';
		
	}

}
SubtaskSumTestVerdictTimeMemory
base20/50
1Accepted0/01ms516 KiB
2Time limit exceeded0/0587ms820 KiB
3Accepted2/21ms512 KiB
4Accepted2/21ms316 KiB
5Accepted2/21ms508 KiB
6Accepted2/21ms316 KiB
7Accepted3/32ms396 KiB
8Accepted3/32ms316 KiB
9Accepted3/33ms424 KiB
10Accepted3/33ms424 KiB
11Time limit exceeded0/2598ms952 KiB
12Time limit exceeded0/2598ms952 KiB
13Time limit exceeded0/2600ms956 KiB
14Time limit exceeded0/2587ms1076 KiB
15Time limit exceeded0/2582ms1012 KiB
16Time limit exceeded0/2583ms1060 KiB
17Time limit exceeded0/2584ms820 KiB
18Time limit exceeded0/2588ms820 KiB
19Time limit exceeded0/2588ms956 KiB
20Time limit exceeded0/3589ms820 KiB
21Time limit exceeded0/3593ms820 KiB
22Time limit exceeded0/3586ms836 KiB
23Time limit exceeded0/3582ms820 KiB