Questo esercizio mi ha fatto penare e non poco...

Comunque spero che sia giusta la soluzione che segue.
Ricavo qualche fatto che sarà utile:
-Con $y=0$ si ottiene che per ogni $x$ reale $f(x) \leq f(f(x)) \quad (1)$.
-Con $y=f(x)-x$ si ottiene che per ogni $x$ reale $[f(x)-x]f(x) \geq 0 \quad (2)$. Sostituendo $x'=f(x)$ in quest'ultima si ottiene che per ogni $x$ reale $[f(f(x))-f(x)]f(f(x)) \geq 0 \quad (3)$.
Considero l'uguaglianza $(1)$ che vale per ogni reale. Voglio mostrare che $f(f(x)) \geq 0$ per ogni $x$ reale.
Suppongo allora per assurdo che esista un certo reale $r$ tale che $f(f(r)) < 0$. Ma allora sostituendo $r$ nella $(3)$ si ha che $f(f(r)) \leq f(r)$. Questa congiunta alla $(1)$ valutata in $x=r$ permette di concludere $f(f(r))=f(r)<0 \quad (4)$. Sostituisco nella disuguaglianza originale $x=f(r)$ e $y=-f(r)+r$ e ottengo $f(r) \leq [-f(r)+r]f(f(r))+f(f(f(r)) \Rightarrow [-f(r)+r]f(r) \geq 0 \quad (5)$ essendo $f(r)=f(f(r))=f(f(f(r)))$ per la proprietà $(4)$. Valuto la $(2)$ in $x=r$ ottenendo $[f(r)-r]f(r) \geq 0$. Confrontando quest'ultima con la $(5)$ si ottiene che $f(r)=r$ poiché non potrebbe essere $f(r)=0$, dato che $f(r)=f(f(r))<0$.
A questo punto nella disuguaglianza iniziale pongo $x=r$ e ottengo $f(y+r) \leq r(y+1)$. Se $y \geq -1$, e quindi se $y+r \geq r-1$, si ha che $r(y+1) \leq 0$. Quindi $f(y+r) \leq r(y+1) \leq 0$. Si può concludere che per ogni $x \geq r-1$ si ha $f(x) \leq 0 \quad (6)$.
Suppongo per assurdo esista un $c < r-1$ tale che $f(c)>0$. Allora, essendo $f(c)>0>r-1$ si ha che $f(f(c)) \leq 0$ per la $(6)$. Tuttavia valutando la $(1)$ in $x=c$ si ha $f(c) \leq f(f(c)) \leq 0$ e quindi $f(c) \leq 0$, assurdo.
Dunque si può concludere che per ogni $x$ reale si ha $f(x) \leq 0 \quad (7)$. Sostituendo in quest'ultima $x'=f(x)$ si ottiene che per ogni $x$ reale $f(f(x)) \leq 0$. Ora per ogni $x$ reale, vista quest'ultima, si possono avere due opportunità: $f(f(x))=0$ oppure $f(f(x)) <0$ che insieme alla $(3)$ porta a concludere $f(f(x)) \leq f(x)$, che con la $(1)$ dà $f(f(x))=f(x)$. Quindi si ha che per ogni reale $x$ o $f(f(x))=0$ oppure $f(f(x))=f(x)$. Quindi per $x=0$ si possono avere due casi:
-$f(f(0))=0$. Chiamo $f(0)=a$. Si può avere $f(f(a))=0$ e quindi $f(0)=0$ oppure $f(f(a))=f(a)$, ovvero $f(0)=0$.
-$f(f(0))=f(0)$. In tal caso nella disuguaglianza originale pongo $x=f(0)$ e $y=-f(0)$ e ottengo $f(0) \leq -f(0)^2+f(0)$ da cui chiaramente $f(0)=0$.
Quindi si ha $f(0)=0$. Dato che per ogni reale si ha $f(x)=0$ oppure $f(f(x))=f(x) \leq 0$ per quello che ho mostrato, sicuramente $f(x+y) \leq yf(x)$ poiché $f(f(x)) \leq 0$. Sostituisco qui dentro $x=-a$ e $y=a$ con $a$ intero positivo. Allora $f(-a) \geq 0$. Ma si ha anche che $f(-a) \leq 0$ per la $(7)$, ciò vuol dire che per ogni intero positivo $a$, $f(-a)=0$. Ma allora $f(r)=0$, assurdo poiché $f(r)<0$.
Quindi $f(f(x) \geq 0 (\cdot)$ per ogni reale $x$.
Pongo nella disuguaglianza originale $x'=f(0)$ e $y'=x-f(0)$. Ottengo $f(x) \leq [x-f(0)]f(f(0))+f(f(f(0))) \quad (8)$. Divido in due casi:
--- Caso 1: $f(f(0))=0$. Ponendo $x=0$ nella disuguaglianza originale si ottiene $f(y) \leq yf(0) \quad (9)$. Con $y=0$ in quest'ultima si ha $f(0) \leq 0$. Divido due casi:
-Sottocaso 1: A questo punto se $f(0)=0$ allora $f(y) \leq 0$ per ogni $y$ reale. Ma allora $f(f(x)) \leq 0$ che insieme a $(\cdot)$ fornisce $f(f(x))=0$ per ogni $x$ reale. Sostituisco nel testo originale $y=c$ e $x=-c$ con $c$ intero positivo e ottengo $0 \leq cf(-c)$, da cui $f(-c) \geq 0$ e quindi, valendo anche quella col segno opposto per i reali, si ha che $f(-c)=0$ come si voleva mostrare.
-Sottocaso 2: Se $f(0)<0$, per ogni $c\geq 0$ si ha $f(c) \leq cf(0) \leq 0$ sostituendo $y=c$ nella $(9)$. Ora suppongo che esista un $d$ negativo tale che $f(d)>0$. Allora, essendo $f(d)$ positivo, si ha $f(f(d)) \leq 0$. Ma per la $(1)$ si ha $f(d) \leq f(f(d)) \leq 0$, assurdo. Dunque $f(x) \leq 0$ per ogni $x$ reale. Ma allora si ha $f(f(x)) \leq 0$ che con la $(\cdot)$ fornisce $f(f(x))=0$ per ogni $x$ reale. Ora si conclude come prima
--- Caso 2: $f(f(0))>0$. In questo caso chiamo $k= -\dfrac{f(f(f(0)))}{f(f(0))} + f(0)$. Se $x\leq k$ allora $ [x-f(0)]f(f(0))+f(f(f(0))) \leq 0$. Quindi per la $8$ si ha che per ogni $x \leq k$, allora $f(x) \leq 0$. Divido in due casi:
-Sottocaso 1: Se $k \geq 0$ allora $f(x) \leq 0$ per ogni $x \leq 0$. Per quest'ultima, allora si ha $f(f(x)) \leq 0$ che unita alla $(\cdot)$ dà $f(f(x))=0$ per ogni $x \leq 0$. Pongo $x=0$ qui e ottengo $f(f(0))=0$. Essendo $f(0) \leq 0$ sostituisco e ottengo $f(f(f(0))) =0$, ovvero $f(0)=0$. Ora sostituisco nell'originale $x=-c$ e $y=c$ con $c$ intero positivo e ottengo ancora una volta $f(-c)=0$.
-Sottocaso 2: Se $k \leq 0$ allora $f(x) \leq 0$ per ogni $x \leq k$. Se esiste almeno un $j\leq k$ tale che $f(j)<0$, allora per la $(2)$ si ha $f(j) \leq j \leq k$ e quindi $f(f(j)) \leq 0$ che unita alla $(\cdot)$ fornisce $f(f(j))=0$. Ora sostituendo $x=j$ si ha $f(j+y) \leq yf(j) \leq 0$ per ogni $y \geq 0$. Quindi anche questa volta si conclude $f(x) \leq 0$ per ogni $x$ reale. E da qui è per l'ennesima volta uguale, usando la $(\cdot)$ e sostituendo $c$ e $-c$.
Se per tutti gli $j \leq k$ si ha che $f(j)=0$ allora prendendone uno a caso si ha che $f(j+y) \leq f(0)$, ovvero per ogni $x$ reale $f(x) \leq f(0)$. Ma allora $f(f(0)) \leq f(0)$ che con la $(1)$ fa concludere $f(f(0))=f(0)$. Sostituendo nell'originale $x=f(0)$ e $y=-f(0)$ si ottiene $f(0)=0$, quindi per quanto ottenuto prima $f(x) \leq f(0)=0$ e da qui si conclude come sempre.
Spero sia tutto corretto e spero ci sia una soluzione meno orrenda (se è giusta) di questa