Ciao, potresti formattare il codice come spiegato in questo post così che sia più leggibile?
In più penso che siano state anche cancellate alcune parti del tuo codice (non c’è nulla dopo il terzo #include e fare cin e cout senza iostream non funzionerebbe).
Il problema col tuo ragionamento è che il max favorisce le soluzioni che superano K il più possibile. Praticamente il tuo codice dà come risposta la somma massima delle combinazioni che avrebbero una somma inferiore a K se le togliessimo l’ultimo elemento. Dovrebbe invece restituire la somma minima delle combinazioni la cui somma supera o eguaglia K, che non sempre è la stessa cosa.
Un esempio in cui il tuo codice sbaglia è:
3 10
6 4 6
Il tuo codice dà come risultato 12 perché 6+6>6+4