8348 | 2024. 01. 14 21:53:18 | renn | Bináris fa magassága (50 pont) | cpp17 | Elfogadva 50/50 | 20ms | 5176 KiB |
#include <bits/stdc++.h>
using namespace std;
int sumlevelek[16] = {1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535};
int levelek_n[16] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768};
int a, b, n, k;
int main() {
cin.tie(0);
ios::sync_with_stdio(0);
cin >> n >> k;
vector<int> hossz(sumlevelek[n-1], 1);
vector<int> sumhossz(sumlevelek[n-1], n-1);
for(int i = 1; i < n; i++)
{
for(int j = sumlevelek[i-1]; j < sumlevelek[i]; j++)
{
sumhossz[j] = n-i-1;
}
}
while(k--)
{
cin >> a >> b;
hossz[a-1] = b;
while(a/2 > 0)
{
sumhossz[(a/2)-1] = max(sumhossz[a-1]+hossz[a-1], sumhossz[(a^1)-1]+hossz[(a^1)-1]);
a/=2;
}
sumhossz[0] = max(sumhossz[1]+hossz[1], sumhossz[2]+hossz[2]);
cout << sumhossz[0] << "\n";
}
return 0;
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 50/50 | ||||||
1 | Elfogadva | 0/0 | 3ms | 1828 KiB | |||
2 | Elfogadva | 0/0 | 18ms | 3060 KiB | |||
3 | Elfogadva | 2/2 | 3ms | 2200 KiB | |||
4 | Elfogadva | 2/2 | 3ms | 2416 KiB | |||
5 | Elfogadva | 2/2 | 3ms | 2636 KiB | |||
6 | Elfogadva | 2/2 | 3ms | 2840 KiB | |||
7 | Elfogadva | 3/3 | 3ms | 3056 KiB | |||
8 | Elfogadva | 3/3 | 3ms | 3140 KiB | |||
9 | Elfogadva | 3/3 | 3ms | 3140 KiB | |||
10 | Elfogadva | 3/3 | 3ms | 3360 KiB | |||
11 | Elfogadva | 2/2 | 19ms | 4416 KiB | |||
12 | Elfogadva | 2/2 | 19ms | 4436 KiB | |||
13 | Elfogadva | 2/2 | 20ms | 4508 KiB | |||
14 | Elfogadva | 2/2 | 20ms | 4712 KiB | |||
15 | Elfogadva | 2/2 | 20ms | 4744 KiB | |||
16 | Elfogadva | 2/2 | 18ms | 4640 KiB | |||
17 | Elfogadva | 2/2 | 18ms | 4708 KiB | |||
18 | Elfogadva | 2/2 | 18ms | 4636 KiB | |||
19 | Elfogadva | 2/2 | 18ms | 4840 KiB | |||
20 | Elfogadva | 3/3 | 19ms | 4984 KiB | |||
21 | Elfogadva | 3/3 | 19ms | 5060 KiB | |||
22 | Elfogadva | 3/3 | 18ms | 5028 KiB | |||
23 | Elfogadva | 3/3 | 19ms | 5176 KiB |