Hm, w takim razie:
1. Dobieranie typów zmiennych [całkowitych]. Jeżeli nie wiesz jaki typ wybrać, to najlepiej używaj int. Unsigned tylko wtedy gdy musisz, lub gdy typ signed jest za mały o jeden bit.
2. long v. long long [int64]. W systemach 32 bit, long = int
3. float v. double. Jeżeli nie wiesz czemu, to zawsze stosuj double. [w tym zadaniu wystarczy tylko int, float/double jest zbędny]
4. Jeżeli [tak pkt 3] Zakładamy, że x i y są typu int, to:
(int) floor ( double(x) / y) ===> x / y // bez żadnych rzutowań
(int) ceil ( double(x) / y) ===> (x + y - 1) / y // bez żadnych dodatkowych rzuto.wań
5. Zamiast:
for (int i = 0; i < ileProb; i++)
można while(ileProb--) //zmienna i do niczego nie jest potrzebna
6. Zamiast
for (int j = 0; j < ileZaproszonych; j++)
można: while(ileZaproszonych--) // zmienna j, jężeli nie wczytujesz do tablicy - do niczego nie jest potrzebna
7. int ileProb = 0, ... ciastkaNaDzien = 0 ....
wystarczy:
int ileProb, ... ciastkaNaDzien ...
8. można od razu cout << ceil .....<< endl
lub printf( ....., ceil........)
9 i 10. Zawsze nie wierz każdemu na słowo. Mi także. Sprawdź to wszystko samodzielnie.