模拟,要注意的点都在注释里了
//要睡a分钟,b分钟后闹钟响
//如果响的时候没睡够a分钟,设c分钟后响,并花d分钟重新入睡
//如果响的时候还没睡着,设c分钟后响,并花d分钟重新入睡
//如果响的时候睡够了a分钟 起床
//判断能否起床,如果能,什么时候起床
void solve() {
//b>=a必起床
//b<a且c<=d时永远起不了床
//b<a且c>d时,一个周期睡d-c分钟
LL a, b, c, d;
cin >> a >> b >> c >> d;
if (b >= a) {
cout << b << endl;
return;
}
if (c <= d) {
cout << -1 << endl;
return;
}
LL k = (a - b) % (c - d);
if (k != 0) k = (a - b) / (c - d) + 1;
else k = (a - b) / (c - d);
cout << k * c + b << endl;
}