# Rifiuti da riciclare 0/100

**URL:** <https://forum.olinfo.it/t/rifiuti-da-riciclare-0-100/7155>\
**Category:** Aiuto\
**Created:** [29 Marzo 2022, 8:56pm UTC](https://forum.olinfo.it/t/rifiuti-da-riciclare-0-100/7155 "2022-03-29T20:56:15Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Andrea0](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/a/8baadc/32.png) [@Andrea0](https://forum.olinfo.it/u/Andrea0)\
**Post date:** [29 Marzo 2022, 8:56pm UTC](https://forum.olinfo.it/t/rifiuti-da-riciclare-0-100/7155/1 "2022-03-29T20:56:15Z")

</div>

Ciao ragazzi sto svolgendo il problema qui sopra e sto riscontrando parecchi problemi, non sono molto esperto e facendo il submit di questo programma mi viene restituito in molti test error signal 6, che cosa significa ? Inoltre vorrei sapere se fosse possibile vedere gli input nei vari test perché non sapendo quale input causa l’errore si va un po’ alla cieca…  
Ecco il codice

 ![2022-03-29 22_54_28-Allenamenti Olimpiadi Italiane di Informatica e altre 5 pagine - Profilo 1 - Mic](https://forum.olinfo.it/uploads/default/original/1X/a95f7356d9c374167340b8c58558917b927bf4c3.png)

---

<div class="post-metadata">

**Author:** ![zJack1342](https://forum.olinfo.it/user_avatar/forum.olinfo.it/zjack1342/32/711_2.png) [@zJack1342](https://forum.olinfo.it/u/zJack1342)\
**Post date:** [30 Marzo 2022, 8:55am UTC](https://forum.olinfo.it/t/rifiuti-da-riciclare-0-100/7155/2 "2022-03-30T08:55:43Z")

</div>

Penso che sia accesso a memoria non allocata: molto probabilmente la variabile j accede a una posizione non lecita di P.  
Ti consiglio di non usare la funzione `pow` e di pre-calcolare le potenze di 2. Non solo ottimizzi i tempi ma eviti errori di precisione dovuti ai decimali.  
Inoltre, se non conosci come avviene l’input e output del programma, non usare:

```auto
ios::sync_with_stdio(false)

```

potrebbero succedere cose non molto belle soprattutto con problemi interattivi.  
P.S  
Per postare il codice, basta racchiuderlo tra `````. Una riga sopra il codice, e una riga sotto.

---

<div class="post-metadata">

**Author:** ![Andrea0](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/a/8baadc/32.png) [@Andrea0](https://forum.olinfo.it/u/Andrea0)\
**Post date:** [30 Marzo 2022, 12:30pm UTC](https://forum.olinfo.it/t/rifiuti-da-riciclare-0-100/7155/3 "2022-03-30T12:30:36Z")

</div>

Sono riuscito a risolvere il problema dell’out of range e ho sostituito pow con una funzione creata da me, solo che quando sottometto il problema ci mette troppo a eseguirsi e alcuni output non sono coretti dandomi 5/100 se hai qualche idea per ottimizzarlo e dirmi dove sto sbagliando mi saresti di grande aiuto

```auto
#include <bits/stdc++.h>

using namespace std;
long long binpow(long long a, long long b) {
    long long res = 1;
    while (b > 0) {
        if (b & 1)
            res = res * a;
        a = a * a;
        b >>= 1;
    }
    return res;
}
long long riciclo(int N, int M, vector<int> T, vector<int> P) {
    long long int temp,j=0,somma=0;
     sort(T.begin(),T.end());
     for(long long int i=0;i<N;i++){
         while(true){
             while(P.at(j)==0){
                 if((P.back()==0)&&(j==M-1)){
                     break;
                 }else{
                 j++;
                 }
             }
             if((P.back()==0)&&(j==M-1)){
                     break;
             }
             if(T.at(i)<binpow(2,j)){
                 break;
             }else{
             T.at(i)=T.at(i)-binpow(2,j);
             P.at(j)=P.at(j)-1;
             somma++;
         }
         }
         if((P.back()==0)&&(j==M-1)){
                     break;
             }
     }
  return somma;
}

```

---

<div class="post-metadata">

**Author:** ![MyK\_00L](https://forum.olinfo.it/user_avatar/forum.olinfo.it/myk_00l/32/3000_2.png) [@MyK\_00L](https://forum.olinfo.it/u/MyK_00L)\
**Post date:** [30 Marzo 2022, 3:05pm UTC](https://forum.olinfo.it/t/rifiuti-da-riciclare-0-100/7155/4 "2022-03-30T15:05:45Z")

</div>

Non ho troppa voglia di stare a guardare al codice quindi non ti rispondo alle domande che hai fatto, pero’ ti posso dire che 2^k lo puoi calcolare con `1ll<<k` se sta in 64 bit.
