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);
}