Submission #1180104

#TimeUsernameProblemLanguageResultExecution timeMemory
1180104miniobSemiexpress (JOI17_semiexpress)C++20
0 / 100
0 ms328 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, nowek; cin >> n >> m >> k >> a >> b >> c >> t; nowek = k; priority_queue<long long> pq; for(long long i = 0; i < m; i++) { cin >> gdzie[i]; } gdzie[m] = n + 1; 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] * 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...