Nie trzeba, wystarczy tylko [krótko ]:
- starać się nie stosować
- mieć świadomość, że istnieją też zmienne lokalne
- dowiedzieć się [literatura] czym to [lokalne vs globalne] się różni.
- stosować świadomie - twój wybór.
- to, że w małych i prostych programach [np na SPOJ'a] nie ma różnicy, nie znaczy, że zmienne globalne są dobrą praktyką programistyczną - NIE nie są.
- SPOJ służy do uatrakcyjnienia nauki i utrwalania wiedzy informatycznej [algorytmicznej], ale mimo wielu zalet, ma też wady - np nie sprawdza "piękności" kodu - wystarczy "mu", że kod [nawet brzydki] daje poprawne odpowiedzi, na przygotowane testy.
- kod jest "czytany" nie tylko przez kompilator, który często potrafi "wypluć" bardziej czysty i optymalny program niż to się nawet śniło koderowi, ale także jest czytany przez człowieka, więc lepiej, by był ładny i czytelny.
Dwa fragmenty kodu w c++:
......
int i = 0;
int main()
{
...
for (;;)
{
cout << i << endl;
++i;
if (i > 9) break;
}
.....
int main(){
....
for (int i = 0; i < 10; ++i)
cout << i << endl;
......
// no comments
Ja nie potrafiłem odczytać tej twojej wizji z twojego kodu.
Większość zadań, można rozwiązać na wiele sposobów i dopiero teraz dostrzegłem inny [od mojej wersji] sposób - możliwe, że to była właśnie twoja wizja, której nie potrafiłeś poprawnie przekazać w swoim kodzie:
- obliczamy ile ciastek zje kolejny obżartuch.
- od tej ilości odejmujemy iość ciastek, które ewentualnie zostały w pudełku u poprzedniego obżartucha.
- obliczamy ilość pudełek, dla poprawionej ilości ciastek + ewentualną resztę ciastek w ostatnim pudełku
- dodajemy ilość pudełek do sumy
- if not last go to 1
- drukujemy obliczoną sumę pudełek
Jest to metoda bardziej "pracochłonna", ale i tak całą pracę wykonuje komputer [procesor].
Chyba łatwiej jednak jest wykorzystać jednego "zastępczego" obżartucha, który zjada wszystkie ciastka, i dopiero dla niego obliczyć potrzebną ilość pudełek.
PS
go to - użyłem tu tylko w psudokodzie , w normalnym kodzie należy użyć normalnej pętli.