Problema con soluzione gasoline


#1

Ciao a tutti!
Oggi ho provato per la prima volta a mandare la mia soluzione per uno dei problemi di allenamento. Ho scelto il problema “gasoline stations”. Ho provato a compilare e a eseguire il codice sui due esempi ed il risultato è corretto. Eppure quando guardo il punteggio assegnato il risultato è 0/100, e questo mi sembra un po’ strano visto che almeno il Subtask 1 (gli esempi) dovrebbe essere portato a termine.
Sospetto ci sia un problema con l’stdout, magari la formattazione. Ho provato sia con newline dopo il risultato, sia senza. Di seguito il codice completo:

#include<iostream>
#include<deque>
#include<utility>

int main() {
int n;
std::deque<int> prices;
std::deque<int> distances;
std::ios::sync_with_stdio(false);
std::cin >> n;
for (int i = 0; i < n; i++)
{
    int p;
    std::cin >> p;
    prices.push_back(p);
}

for (int i = 0; i < n; i++)
{
    int d;
    std::cin >> d;
    distances.push_back(d);
}

int bestPrice = 1000;
int totalPrice;
for (int i = 0; i < n; i++)
{
    // Update bestStation if we found a better station
    if (bestPrice > prices[i]) {
        bestPrice = prices[i];
    }

    // Buy gasoline and add computed price to totalPrice.
    totalPrice += distances[i] * bestPrice;
}

std::cout << totalPrice /* ho provato anche con << std::endl */ ;
// std::printf("%lld\n", totalPrice);
// Questo invece è il comando usato nel template disponibile sul portale degli allenamenti
}

Scusate per la formattazione disgustosa. E se avete anche proposte per migliorare il codice (come un container più adatto da utilizzare) sono ben accette :slight_smile:


#2

Solo le variabili dichiarate in gloable assumono come valore iniziale 0. Inizializzata la variabile il codice incomincia a produrre risultati corretti.
Per ottenere il 100 dovresti prestare attenzione a un piccolo particolare la risposta potrebbe non essere rappresentata da un semplice int .
Per i container dipende da cosa devi fare, in questo caso andava benissimo un vettore o un vector.

using namespace std;

è tua amica per evitare di specficare la namespace, risparmi tempo.