#include <cstdio>
using namespace std;
int main () {
int liczba_osob;
scanf("%d", &liczba_osob);
int ceny [liczba_osob];
for(int i = 0; i < liczba_osob; i++)
{
scanf("%d", &ceny[i]);
}
int smallest = ceny[0];
int smallest_id = 0;
int id = -1;
int cena;
while(id + 1 != liczba_osob)
{
for(int i = id+1; i < liczba_osob; i++)
{
if(ceny[i] <= smallest)
{
smallest = ceny[i];
smallest_id = i;
}
}
cena += (smallest_id - id)*ceny[smallest_id];
id = smallest_id;
smallest = ceny[id+1];
}
printf("%d", cena);
return cena;
}
ale dostaje 0 punktów. W przykładzie dane są
4
5 2 4 3
i mój program zwraca 10, ale gdy wgrywam plik na serwer dostaje informację, że "1 wiersz 1: wczytano '134973986', a oczekiwano '10'". Dlaczego tak się dzieje?
Ostatnio zmieniony 18 lut 2016, o 18:44 przez Afish, łącznie zmieniany 1 raz.
Powód:Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
Zmienna cena jest deklarowana bez przypisania jej jakiejkolwiek wartości, zatem są w niej jakieś śmieci, więc na koniec wypisujesz śmieci + wynik. Musisz ustawić cena = 0 zanim zaczniesz sumować (problem śmieci w zmiennych nie dotyczy zmiennych globalnych, te są automatycznie zerowane).
Programy na wszystkich konkursach algorytmicznych jakie znam powinny zwracać na końcu 0 (czyli return 0; zamiast return cena;), wynik zawsze wystarczy przekazać przez wypisanie na standardowe wyjście, chyba że w zadaniu jest wyraźnie napisane, że trzeba inaczej.
Jeżeli poprawisz te dwie rzeczy to program na mainie powinien dawać dobry wynik na przykładowym, ale wciąż nie dostanie 100 punktów. Dlaczego to już zostawiam Ci do wymyślenia