Ciao a tutti, ho provato a fare garage, problema apparentemente semplice, con questo algoritmo:
Ma va in TLE o WA?
da errore nell’output, nessun errore ne di memoria ne di tempo… e i testcase funzionano
Quando togli la macchina dalla coda per metterla nel parcheggio decrementi available? Non l’hai scritto… Se non è questo il problema, posta il codice.

in >> N >> M;
available = N;
for(int n = 0; n < N; n++)
{
in >> parks[n].cost;
parks[n].available = true;
}
for(int n = 1; n <= M; n++)
{
in >> cars[n].peso;
cars[n].park = -1;
}
int x;
int sum = 0;
for(int n = 0; n < 2*M; n++)
{
in >> x;
if(x < 0)
{
cout << "Car " << abs(x) << " is about to leave!" << endl;
if(!carQueue.empty())
{
Car a = carQueue.front();
carQueue.pop();
cout << "Car with weight " << a.peso << " comes to " << cars[abs(x)].park << endl;
a.park = cars[abs(x)].park;
sum += a.peso * parks[a.park].cost;
}
else
{
minimum = min(minimum, cars[abs(x)].park);
parks[cars[abs(x)].park].available = true;
cout << "Nobody in the queue" << endl;
available++;
}
cars[abs(x)].park = -1;
}
else
{
cout << "Car " << abs(x) << " is about to enter!" << endl;
if(available == 0)
{
cout << "Putting in the queue" << endl;
carQueue.push(cars[x]);
}
else
{
while(minimum < N && !parks[minimum].available)
minimum++;
cout << "Car " << x << " comes to " << minimum << endl;
cars[x].park = minimum;
parks[minimum].available = false;
sum += cars[x].peso * parks[minimum].cost;
available--;
}
}
}
out << sum;
while(minimum < N && !parks[minimum].available)DonaDev
minimum++;
Considera che in alcuni test case la seguente asserzione, posta dopo le due righe indicate sopra, fallisce.
assert(parks[minimum].available);
grazie mille chiedo troppo se ti chiedo l’input del caso?
Per esempio, fallisce con questo input (output previsto 20163827):
Credo che il problema nasca dal fatto che quando liberi un posto per metterci l’auto A (quella in cima alla coda) effettivamente non ti salvi che l’auto A viene parcheggiata lì, lo fai nella variabile A ma non nell’array delle auto.
parks[cars[-x].park].available = true;
E’ un po’ contorto ma dovrebbe essere così

oddio hai ragione! cavolo i soliti errori di distrazione D: grazie infinite!