Server Farm(Plugs)[1 error]

Mi date una mano a trovare qual è l’UNICO caso in cui la seguente soluzione non fuonziona, o meglio mi da l’errore di memoria. Grazie in anticipo
Questa è la mia soluzione:

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
int main() {
    int N, M, som=0;
    cin >> N >> M;
    vector<int>f(N);  // num computer e pot di calcolo
    vector<string>t(N);  // num spine e le compatabilità
    vector<string>s(M);   // prese sulla ciabatta (L10,L16,Ibrido)
    int l10=0,l16=0,bip=0;
    vector<int>::iterator it;
    vector<int>dieci;
    vector<int>sedici;
    vector<int>bipasso;
    int i; 
    for ( i=0;i<N;i++){
        cin >> f[i];
    }
    for( i=0;i<N;i++){
        cin >> t[i];
    }
    for ( i=0;i<M;i++){
        cin >> s[i];
    }
    for( i=0;i<M;i++){
        if(s[i]=="L10"){
            l10++;
        }
        else{
            if(s[i]=="L16"){
                l16++;
            }
            else{
                bip++;
            }
        }
    }
    for( i=0;i<N;i++){
        if(t[i]=="L10"){
            dieci.push_back(f[i]);
        }
        else{
            if(t[i]=="L16"){
                sedici.push_back(f[i]);
            }
        }
    }
    sort(dieci.begin(),dieci.end());
    sort(sedici.begin(),sedici.end());
    for( i=1;i<=l10 && dieci.size()!=0;i++){
        som+=dieci[dieci.size()-1];
        it=dieci.end()-1;
        dieci.erase(it);
    }
    for( i=1;i<=l16 && sedici.size()!=0;i++){
        som+=sedici[sedici.size()-1];
        it=sedici.end()-1;
        sedici.erase(it);
    }
    i=0;
    while(i<dieci.size()){
    	sedici.push_back(dieci[i]);
    	i++;
	}
	bipasso=sedici;
	sort(bipasso.begin(),bipasso.end());
    for( i=1;i<=bip;i++){
    	som+=bipasso[bipasso.size()-i];
    }
    cout << som;
}

sull’ultimo for manca un controllo i non deve superare bipasso.size()
ci vuole

for(i=1; i<=bpi && i<=bipasso.size(); i++)

con questa ha fatto 100

1 Mi Piace