Codeforces EDU: Children Holiday

Describe your issue

I seem to be consistently going wrong somewhere, can anyone help me out?

ll func(int time, vi &t, vi &z, vi &y) {
    ll sum = 0;
    for(int i = 0; i < t.size(); i++) {
        ll r = time % (z[i]*t[i] + y[i]);
        sum += (time/(z[i]*t[i] + y[i]))*z[i] + (r/t[i]);
    }
    return sum;
}


int BinSearch(ll l, ll r, ll m, vi &t, vi &z, vi &y) {
    l--, r++;
    while(r-l > 1) {
        int mid = l + (r-l)/2;
        if (func(mid, t, z, y) < m) l = mid;
        else r = mid;
    }
    return r;
}

void printTimes(ll time, vi&t, vi&z, vi&y, int S) {
    for(int i = 0; i < t.size(); i++) {
        ll r = time % (z[i]*t[i] + y[i]);
        ll x = (time/(z[i]*t[i] + y[i]))*z[i] + (r/t[i]);
        if (S >= x) {cout << x << ' '; S -= x;}
        else {cout << S << ' '; S = 0; }
    }
    cout << endl;
}


void solve();

int main(void) {
    ios_base::sync_with_stdio(0), cin.tie(0);
    int n = 1;
    while(n--) {solve();}
    return 0;
}

void solve() {
    int n, m; cin >> m >> n;
    vi t(n), z(n), y(n);
    for(int i = 0; i < n; i++) {
        cin >> t[i] >> z[i] >> y[i];
    }
    if (m == 0) {
        cout << 0 << endl;
        for(int i = 0; i < n; i ++) cout << 0 << ' ';
        cout << endl;
    }
    ll time = BinSearch(1, inf, m, t, z,y);
    cout << time << endl;
    printTimes(time,t,z,y,m);
}