This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define int long long
typedef pair<int, int> pii;
const int MXN = 3005;
int n, m, k, A, B, C, T, a[MXN], ans;
struct P {
int now, r, x, l;
P() {
now = 0;
r = 0;
x = 0;
l = 0;
}
void calc() {
if (x < 0) l = 0;
else l = min(r, x / A + 1);
}
void push() {
ans += l;
r -= l;
x -= C * l;
calc();
}
} p[MXN];
int32_t main() {
cin.tie(0) -> sync_with_stdio(false);
cin >> n >> m >> k >> A >> B >> C >> T;
for (int i = 0; i < m; i++) {
cin >> a[i];
a[i]--;
}
a[m] = n;
for (int i = 0; i < m; i++) {
p[i].now = 0;
p[i].r = a[i + 1] - a[i];
p[i].x = T - a[i] * B;
p[i].calc();
// cout << p[i].now << ' ' << p[i].r << ' ' << p[i].x << ' ' << p[i].l << endl;
p[i].push();
}
// cout << endl;
// cout << ans << endl;
// for (int i = 0; i < m; i++) cout << p[i].now << ' ' << p[i].r << ' ' << p[i].x << ' ' << p[i].l << endl;
// cout << endl;
for (int i = m; i < k; i++) {
int bigid = 0;
for (int j = 1; j < m; j++) {
if (p[bigid].l < p[j].l) bigid = j;
}
p[bigid].push();
// for (int j = 0; j < m; j++) cout << p[j].now << ' ' << p[j].r << ' ' << p[j].x << ' ' << p[j].l << endl;
// cout << endl;
}
cout << ans - 1 << endl;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |