Truffa contabile 0/100 (execution timed out)

Ciao, sto cercando di risolvere l’esercizio della truffa del contabile. Ho cercato di risolverlo nella maniera più intuitiva possibile ma ottengo solo 0/100 (execution timed out in tutti i casi). Ho cercato di ottimizzare il codice mettendo “#pragma GCC optimize(“Ofast”)” ma non mi prende neanche i casi di esempio in modo corretto. Mi potreste dare qualche suggerimento per ottimizzare ancora di più la soluzione. Qui sotto c’è il codice:

#include <bits/stdc++.h>
#pragma GCC optimize(“Ofast”)
using namespace std;
int sfangate(int N, int V){
long long int somma=0;
int sfangate=0;
for(int i=0;i<N;i++){
somma=somma+V[i];
}
sort(V,V+N);
for(int i=0;i<N;i++){
somma=somma-2*V[i];
sfangate++;
if(somma>=0)
break;
}
return sfangate;
}
int main() {
const int MAXN = 100000;
int V[MAXN];

FILE *fr, *fw;
int N, i;

fr = fopen("ois_truffa.input17.txt", "r");
fw = fopen("output.txt", "w");
assert(1 == fscanf(fr, "%d", &N));
for(i=0; i<N; i++)
    assert(1 == fscanf(fr, "%d", &V[i]));

fprintf(fw, "%d\n", sfangate(N, V));
fclose(fr);
fclose(fw);
return 0;

}

Stai leggendo il file sbagliato.
Il tuo programma apre un file inesistente e aspetta all’infinito del contenuto che non arriverà mai.
Il file giusto è input.txt.

grazie mille