感觉自己思路出现了问题。。。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <string>
using namespace std;
int n;
double x, p, q;
int sum = 1;
int main() {
cin >> n >> x >> p >> q;
// cout << n << " " << x << " " << p << " " << q << endl;
//先做一下处理
int x1 = p, y = q;
int yue = __gcd(x1, y);
p /= yue;
q /= yue;
// cout << p << " " << q << endl;
int a[n];
for (int i = 0; i < n; i++) {
cin >> a[i];
}
int temp = x;
int task = 0;
double day = 1;
int sleep = 0;
while (task != n) { //day circle
// cout << "day = " << day << endl;
// cout << "------" << endl;
// cout << x << endl;
// cout << p / q << endl;
// cout << x * (p / q) << endl;
// cout << day *x * (p / q ) << endl;
// cout << "------" << endl;
// cout << "task=" << task << endl;
if (temp - a[task] + sleep >= day * x * (p / q)) {
// cout << "day = " << day << " 时可以工作" << endl;
temp -= a[task];
task++;
} else {
sleep += temp;
day++;
sum++;
temp = x;
}
}
cout << sum;
return 0;
}