Submission #1237817

#TimeUsernameProblemLanguageResultExecution timeMemory
1237817nerrrminSemiexpress (JOI17_semiexpress)C++20
100 / 100
7 ms4536 KiB
#include<bits/stdc++.h> #define endl '\n' #define pb push_back using namespace std; const long long maxn = 3005; void speed() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); } long long n, m, k; long long a, b, c; long long t; long long s[maxn]; int main() { //speed(); cin >> n >> m >> k; cin >> a >> b >> c; cin >> t; for (long long i = 1; i <= m; ++ i) cin >> s[i]; priority_queue < long long > q; long long ans = -1; for (long long i = 1; i <= m; ++ i) { long long pre = b * (s[i] - 1); if(i == m) { if(pre <= t)ans ++; break; } if(pre > t)break; long long av = s[i] + max(1LL * 0, (t - pre)) / a; // cout << "round " << endl; // cout << i << " " << av << endl; ans += (min(s[i+1] - 1, av) - s[i] + 1); // cout << ans << endl; long long turn = 1; long long pos = av; while(av < s[i+1]) { if(turn > k-m)break; long long onemore = t - pre - (pos - s[i] + 1) * c; //cout << onemore << endl; if(onemore < 0)break; long long addav = 1 + onemore / a; // cout << "+ " << addav << endl; av += addav; if(addav == 0)break; if(av >= s[i+1]) { addav -= (av - s[i+1] + 1); } q.push(addav); pos = av; turn ++; } } long long op = k - m; // cout << ans << endl; while(op -- && q.size()) { ans += q.top(); // cout << "? " << q.top() << endl; q.pop(); } cout << ans << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...