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;
}