Submission #1180110

#TimeUsernameProblemLanguageResultExecution timeMemory
1180110miniobSemiexpress (JOI17_semiexpress)C++20
100 / 100
54 ms33580 KiB
#include <bits/stdc++.h> using namespace std; long long gdzie[3007]; int main() { long long n, m, k, a, b, c, t, odp = -1; cin >> n >> m >> k >> a >> b >> c >> t; priority_queue<long long> pq; for(long long i = 0; i < m; i++) { cin >> gdzie[i]; } for(long long i = 0; i < m - 1; i++) { long long podst = (gdzie[i] - 1) * b; if(podst <= t) { long long ile_dodatkowo = (t - podst) / a; long long prawo = min(gdzie[i] + ile_dodatkowo, gdzie[i + 1] - 1); odp += prawo + 1 - gdzie[i]; //cout << prawo + 1 - gdzie[i] << endl; for(long long j = 0; j < k; j++) { if(podst + (prawo + 1 - gdzie[i]) * c <= t) { ile_dodatkowo = (t - (podst + (prawo + 1 - gdzie[i]) * c)) / a; long long prawo2 = min(prawo + ile_dodatkowo + 1, gdzie[i + 1] - 1); //cout << prawo2 - prawo << endl; pq.push(prawo2 - prawo); prawo = prawo2; } } } } if((gdzie[m - 1] - 1) * b <= t) { odp++; } for(long long i = m; i < k && !pq.empty(); i++) { odp += pq.top(); pq.pop(); } cout << odp << endl; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...