Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Arbre<int> recursivitat(Arbre<int>& xp, int ETS, int sobres, const vector<int>& consumidors) {
- if(xp.es_buit()) { //Cas directe
- return ETS; //Retorna l'ETS.
- }
- else {
- if(xp.arrel() > C) { //Si és productor
- Arbre<int> xp1,xp2;
- xp.fills(xp1,xp2);
- ETS += consultar_energ_pais(xp.arrel());
- if (ETS%2 == 0) { //Si energia divisible per 2.
- recursivitat(xp1, ETS/2, consumidors);
- recursivitat(xp2, ETS/2, consumidors);
- }
- else{ //Si energia no divisible per 2.
- recursivitat(xp1, 1+ETS/2, consumidors);
- recursivitat(xp2, ETS/2, consumidors);
- }
- else if(xp2.es_buit()) {//Si només té un fill
- recursivitat(xp1, ETS, consumidors);
- }
- }
- else { //Es consumidor
- Arbre<int> xp1,xp2;
- xp.fills(xp1,xp2);
- if (ETS%2 == 0) { //Si energia divisible per 2.
- recursivitat(xp1, ETS/2, consumidors);
- recursivitat(xp2, ETS/2, consumidors);
- }
- else{ //Si energia no divisible per 2.
- recursivitat(xp1, 1+ETS/2, consumidors);
- recursivitat(xp2, ETS/2, consumidors);
- }
- else if(xp2.es_buit()) {//Si només té un fill
- recursivitat(xp1, ETS, consumidors);
- }
- }
- if(xp.arrel() <= C) { //Consumidor
- if(consumidors[xp.arrel()-1] <= ETS) { //Energia que vol és menor que l'ETS disponible.
- Paisos[xp.arrel()-1].modifica_energia(ETS);
- }
- else { //Energia que vol és major que l'ETS disponible.
- sobres = consumidors[xp.arrel()-1] - ETS;
- Paisos[xp.arrel()-1].modifica_energia(ETS);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement