Pranzo dalla nonna help

Salve, avrei bisogno di una mano con questo codice. Ho fatto molti test con numeri casuali e il risultato è sempre corretto ma quando lo sottopongo mi da 0 su 100.

#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream leggi("input.txt");
ofstream scrivi ("output.txt");
long somma(vector<long> vec,long sum,long  min)
{
	for(int i=vec.size();i>=0;i--)
	{
		sum-=vec[i];
		if(sum<min)
			sum+=vec[i];
		if(sum==min)
			return sum;
	}
	return sum;
}

int main()
{
	long N,K;
	vector<long> P;
	leggi>>N>>K;
	long temp,sum;
	for(int i=0;i<N;i++)
	{
		leggi>>temp;
		sum+=temp;
		P.push_back(temp);
	}
	sort(P.begin(),P.end());
	scrivi<<somma(P,sum,K);
}

Ciao, il problema non dovrebbe dare punteggio perchè sum è dichiarata in locale senza essere inizializzata a 0.
Tuttavia la soluzione non è corretta al 100%, prova questo esempio:
4 9
1 4 6 8

3 Mi Piace