8947 | 2024. 02. 07 16:35:17 | Tina0731 | Bináris fa magassága (50 pont) | cpp14 | Időlimit túllépés 34/50 | 600ms | 5084 KiB |
#include <iostream>
#include <cmath>
#include <bits/stdc++.h>
using namespace std;
/*
3 5
2 6
4 3
6 7
5 4
2 1
*/
int main()
{
int n;
cin>>n;
long long int lszam=1<<(n-1), szam=lszam<<1; //levelek
//cout<<lszam<<" "<<szam;
vector <long long int> fa(szam);
vector <long long int> levelek(lszam+1);
for(int i=0;i<=lszam;i++)
levelek.at(i)=n-1;
long long int legnagyobb=n-1;
fa.at(1)=0;
for (int i=2;i<szam;i++)
fa.at(i)=1;
int muv;
cin>>muv;
//vector<int> kimenet(muv);
vector<int> szintek{1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536};
int hol, mire;
for (int i=0;i<muv;i++)
{
bool rendezni = false;
cin>>hol>>mire;
int szint=0;
while(hol>=szintek[szint])
{
szint++;
}
//cout<<"szint:"<<szint<<endl;
int tav=n-szint;
int valt=mire-fa.at(hol);
fa.at(hol)=mire;
for(int i=(hol<<tav)-(lszam-1);i<=((hol+1)<<tav)-lszam;i++)
if(valt != 0)
{
if (valt<0 && levelek.at(i)==legnagyobb)
rendezni=true;
levelek.at(i)+=valt;
if (valt>0 && levelek.at(i)>legnagyobb)
legnagyobb=levelek.at(i);
}
if (rendezni)
legnagyobb=*max_element(levelek.begin(),levelek.end());
/*
cout<<"A levelek tartalma: "<<endl;
for(int i=1;i<lszam+1;i++)
{
cout<<levelek.at(i)<<" ";
}
*/
//kimenet.at(i)=legnagyobb;
cout<<legnagyobb<<endl;
}
/*
*/
return 0;
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 34/50 | ||||||
1 | Elfogadva | 0/0 | 3ms | 1816 KiB | |||
2 | Elfogadva | 0/0 | 326ms | 3404 KiB | |||
3 | Elfogadva | 2/2 | 4ms | 2092 KiB | |||
4 | Elfogadva | 2/2 | 4ms | 2216 KiB | |||
5 | Elfogadva | 2/2 | 4ms | 2432 KiB | |||
6 | Elfogadva | 2/2 | 4ms | 2536 KiB | |||
7 | Elfogadva | 3/3 | 4ms | 2744 KiB | |||
8 | Elfogadva | 3/3 | 4ms | 2952 KiB | |||
9 | Elfogadva | 3/3 | 4ms | 3036 KiB | |||
10 | Elfogadva | 3/3 | 4ms | 3164 KiB | |||
11 | Elfogadva | 2/2 | 207ms | 4732 KiB | |||
12 | Elfogadva | 2/2 | 324ms | 4820 KiB | |||
13 | Elfogadva | 2/2 | 426ms | 4944 KiB | |||
14 | Időlimit túllépés | 0/2 | 518ms | 5084 KiB | |||
15 | Időlimit túllépés | 0/2 | 577ms | 3568 KiB | |||
16 | Elfogadva | 2/2 | 328ms | 4924 KiB | |||
17 | Elfogadva | 2/2 | 324ms | 4824 KiB | |||
18 | Elfogadva | 2/2 | 326ms | 4828 KiB | |||
19 | Elfogadva | 2/2 | 328ms | 4824 KiB | |||
20 | Időlimit túllépés | 0/3 | 547ms | 3552 KiB | |||
21 | Időlimit túllépés | 0/3 | 565ms | 3568 KiB | |||
22 | Időlimit túllépés | 0/3 | 600ms | 3524 KiB | |||
23 | Időlimit túllépés | 0/3 | 565ms | 3768 KiB |