# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1200870 | nguyn | Semiexpress (JOI17_semiexpress) | C++20 | 11 ms | 4540 KiB |
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ll long long
#define F first
#define S second
#define pb push_back
#define pii pair<int,int>
const int N = 3e3 + 5;
int n, m, k;
int a, b, c;
int t, s[N];
signed main(){
ios_base::sync_with_stdio(false) ;
cin.tie(0) ; cout.tie(0) ;
if (fopen("INP.INP" ,"r")) {
freopen("INP.INP" ,"r" , stdin) ;
freopen("OUT.OUT" , "w" , stdout) ;
}
cin >> n >> m >> k;
k -= m;
cin >> a >> b >> c;
cin >> t;
for (int i = 1; i <= m; i++) {
cin >> s[i];
}
int res = -1;
vector<int> vec;
for (int i = 1; i < m; i++) {
int cost = (s[i] - 1) * b;
if (cost > t) break;
int l = s[i];
int r = s[i + 1];
int rem = t - cost;
int nxt = min(l + (rem / a) + 1, r);
// cout << i << ' ' << nxt << ":" << endl;
res += nxt - l;
int cnt = 0;
while(1) {
l = nxt;
int cur_rem = rem - (l - s[i]) * c;
if (cur_rem < 0) break;
cnt++;
nxt = min(l + (cur_rem / a) + 1, r);
// cout << l << ' ' << nxt << endl;
vec.pb(nxt - l);
if (nxt >= r || cnt >= k) {
break;
}
}
}
if ((n - 1) * b <= t) res++;
sort(vec.begin(), vec.end());
// for (int i : vec) {
// cout << i << ' ';
// } cout << endl;
for (int i = vec.size() - 1; i >= max(0ll, (int)vec.size() - k); i--) {
res += vec[i];
}
cout << res;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |