Non mi sembra che il controllo fra rim e day*num2 sia errato anzi direi che vada fatto ma lo integrerei con l’altro:
for (int i = 0; i < tot; ++i){
app = rooms[i] - day * ucc1;
if (app < 0)
app = 0;
if (app) {
giorninec = app / ucc2;
if (app % ucc2 != 0) ++giorninec;
if (giorninec > day) {
rim = day * num2 + 1;
break;
}
rim += app / ucc2;
if (app % ucc2 != 0) ++rim;
}
}