Submission #473832

#TimeUsernameProblemLanguageResultExecution timeMemory
473832Drew_Semiexpress (JOI17_semiexpress)C++17
100 / 100
89 ms33300 KiB
#include <bits/stdc++.h>
using namespace std;

#define pb push_back
#define ll long long

constexpr int MAX = 3069;

ll n, m, k, a, b, c, t;
int s[MAX];


int main()
{
	ios :: sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);

	cin >> n >> m >> k >> a >> b >> c >> t;
	for (int i = 1; i <= m; ++i)
		cin >> s[i];
	s[m+1] = (int)n+1;

	ll res = 0;
	vector<ll> v;
	for (int i = 1; i <= m && b * (s[i] - 1) <= t; ++i)
	{
		ll rem = t - b*(s[i] - 1);
		ll prv = min((ll)s[i+1] - 1, s[i] + rem/a);
		res += prv - s[i] + 1;

		for (int rep = 0; rep < k && prv + 1 < s[i+1]; ++rep)
		{
			ll tmp = rem - (prv+1 - s[i]) * c;
			if (tmp < 0)
				break;

			ll nxt = min((ll)s[i+1] - 1, prv+1 + tmp/a);
			v.pb(nxt - prv);
			prv = nxt;
		}
	}

	sort(v.begin(), v.end(), greater<ll>());
	for (int i = 0; i < min(k-m, (ll)v.size()); ++i)
		res += v[i];
	cout << res - 1 << '\n';

	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...