Ciao a tutti, stavo risolvendo il problema Trasporto tronchi.
Ho creato un codice che mi da 100/100, tuttavia penso che sia comunque sbagliato.
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
long long carica(int N, int K, vector<int> A) {
ll ans = 0;
for(int i = 0; i < N; i++){
if(A[i] < K) ans += A[i];
else{
if(i == N - 1){
ans += A[i];
}
else{
ans += 1LL * K * (N - i);
ans += A[N - 1];
return ans;
}
}
}
return ans;
}
// GRADER DI ESEMPIO, NON MODIFICARE
#ifndef EVAL
int main() {
int N, K;
cin >> N >> K;
vector<int> A(N);
for (int &a: A) cin >> a;
cout << carica(N, K, A) << endl;
return 0;
}
#endif
nel caso di test
5 30
1 2 3 31 32
il risultato dovrebbe essere 69, senza sfrondare alcun tronco, mentre il codice che ho inviato da come risposta 98 e sfronda gli ultimi due tronchi.
Mi spiegate se sto sbagliando qualcosa?
Grazie mille in anticipo!