Gasoline Stations

Portale di allenamento
Soluzione corretta al 100%:
                
#include <stdlib.h> 
#include <assert.h<

// constraints
#define MAXN 1000000

// input data
int N, i;
int P[MAXN];
int G[MAXN];

int main() {
  //  uncomment the following lines if you want to read/write from files
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);

  assert(1 == scanf("%d", &N));
  for (i = 0; i < N; i++) assert(1 == scanf("%d", &P[i]));
  for (i = 0; i < N; i++) assert(1 == scanf("%d", &G[i]));

  // insert your code here
   long long totalCost = 0;  // Inizializziamo il costo totale a zero.
    int minPrice = P[0]; // Inizializziamo il prezzo minimo alla prima stazione.

    for (int i = 0; i < N; i++) {
        // Aggiorniamo il minimo prezzo se il prezzo alla stazione attuale è minore.
        if (P[i] < minPrice) {
            minPrice = P[i];
        }

        // Aggiungiamo il costo del carburante necessario alla stazione attuale al costo totale.
        totalCost += (long long)minPrice * G[i];
    }

 

  printf("%lld\n", totalCost);  // print the result
  return 0;
}
        
                
              
Spiegazione del programma:

In questo programma, leggiamo il numero di stazioni N, i prezzi per litro Pi e il carburante minimo richiesto Gi. Utilizziamo una variabile totalCost per tenere traccia del costo totale e una variabile minPrice per tenere traccia del prezzo minimo finora. Alla fine del ciclo, totalCost conterrà il costo minimo totale per il viaggio. Questo programma utilizza un ciclo per scorrere tutte le stazioni e calcola il costo minimo tenendo traccia del prezzo minimo e sommando il costo del carburante richiesto. Alla fine, stampiamo il costo totale.