salve a tutti, sto provando a risolvere bigsomma ma non capisco come faccio a uscire di tempo… qualcuno che sa come posso risolvere??
grazie in anticipo!!
#include <iostream>
#include <cstdio>
using namespace std;
long long somma(FILE *f) {
// leggi N
int N;
fscanf(f, "%d", &N);
// leggi la sequenza e calcola la somma
long long somma = 0;
for (int i = 0; i < N; i++) {
int valore;
fscanf(f, "%d", &valore);
somma += valore;
}
return somma;
}
Questo non è un problema di implementazione. É una gara a chi legge più veloce da file quindi ti sconsiglio di provare a risolverlo come faresti per i problemi normali.
Metodo alternativo: Una strategia, se proprio vuoi provarci, é stampare valori casuali finché non li azzecca tutti
Anche io stavo cercando di risolverlo, ho questa bozza di funzione che almeno in parte mi sembra poter funzionare e penso sia anche abbastanza veloce.
Ma già con i primi due esempi sulle submission sembra non andare, mentre localmente a me va, quindi mi risulta un pò difficile testarla, qualcuno saprebbe aiutare?
long long somma(FILE *f) {
size_t max_buffer_size_first_line = 8 * sizeof(char);
char first_line[max_buffer_size_first_line];
fgets(first_line, max_buffer_size_first_line, f);
int N = atoi(strtok(first_line, "\n"));
size_t max_buffer_size_second_line = (9 + 1) * N * sizeof(char);
char *second_line;
size_t parts = 1;
while (1) {
second_line = malloc(max_buffer_size_second_line);
if (second_line != NULL)
break;
else {
max_buffer_size_second_line /= 2;
parts++;
}
}
long long sum = 0;
for (size_t part = 0; part < parts; part++) {
fgets(second_line, max_buffer_size_second_line, f);
char *token = strtok(second_line, " ");
do {
sum += atoi(token);
token = strtok(NULL, " ");
} while (token != NULL);
}
fclose(f);
return sum;
}
Ciao, non ho letto attentamente il tuo codice, comunque è impossibile prendere più di 2/100 (o forse 3/100) su questo problema usando in modo naive le funzioni della libreria standard (tipo fgets, atoi e strtok). Comunque non vale la pena di perdere troppo tempo dietro a questo problema, almeno secondo me.